Я пытаюсь сопоставить поле как nGram и «точное» совпадение и сделать так, чтобы точные совпадения отображались первыми в результатах поиска. Это ответ на аналогичный вопрос , но я изо всех сил пытаюсь заставить его работать.
Независимо от того, какое значение повышения я укажу для поля «точное», я каждый раз получаю один и тот же порядок результатов. Вот как выглядит мое сопоставление полей:
"name" : {
"type" : "multi_field",
"fields" : {
"name" : {
"type" : "string",
"boost" : 2.0,
"analyzer" : "ngram"
},
"exact" : {
"type" : "string",
"boost" : 4.0,
"analyzer" : "simple",
"include_in_all" : false
}
}
}
И вот как выглядит запрос:
{
"query": {
"filtered": {
"query": {
"query_string": {
"fields":["name","name.exact"],
"query":"Woods"
}
}
}
}
}