После просмотра данного видео
https://www.youtube.com/watch?v=7FLXjgB0PQI возник вопрос про search_analyzer и index_analyzer.
Я сразу же прочитал оф. доки, но так и не понял почему ES отрабатывает именно таким образом.
Например у меня есть такая конфигурация:
"settings" : {
"analysis" : {
"filter" : {
"autocomplete" : {
"type" : "edge_ngram",
"min_gram" : 1,
"max_gram" : 20
}
},
"analyzer" : {
"autocomplete" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : ["lowercase", "autocomplete"]
}
}
}
},
"mappings" : {
"user" : {
"properties" : {
"name" : {
"type" : "multi_field",
"fields" : {
"name" : {
"type" : "string",
"analyzer" : "standard"
},
"autocomplete" : {
"type" : "string",
"index_analyzer" : "autocomplete",
"search_analyzer" : "standard"
}
}
}
}
}
}
В индекс положим всего 2 имени: John Smith и Johnathan Smith.
После этого я делаю такие поисковые запросы:
{
"match" : {
"name.autocomplete" : "john smi"
}
}
и
{
"match" : {
"name" : "john smi"
}
}
Если я понимаю правильно, то я должен был увидеть один и тот же результат, т.к. в обоих случаях ES должен был использовать standard analyzer, но я получил разные результаты.
Вопрос: почему?