Мне удалось воспроизвести проблему с примерами данных, и Мое решение использует увеличение времени запроса, поскольку увеличение индекса индекса устарело по сравнению с основной версией ES 5.
Кроме того, я создал образец данные таким образом, что без повышения оба образца данных будут иметь одинаковую оценку, следовательно, нет никакой гарантии, что тот, который соответствует, будет первым в результате поиска, это должно помочь вам лучше понять его.
1. Отображение индекса
{
"mappings": {
"properties": {
"title": {
"type": "text"
},
"second_title" :{
"type" :"text"
}
}
}
}
2. Индекс Примеры документов
a)
{
"title": "opster",
"second_title" : "Dimitry"
}
b)
{
"title": "Dimitry",
"second_title" : "opster"
}
Поисковый запрос
{
"query": {
"bool": {
"should": [
{
"match_phrase_prefix": {
"title": {
"query" : "dimitry",
"boost" : 2.0 <-- Notice the boost in `title` field
}
}
},
{
"match_phrase_prefix": {
"second_title": {
"query" : "dimitry"
}
}
}
]
}
}
}
Вывод
"hits": [
{
"_index": "60454337",
"_type": "_doc",
"_id": "1",
"_score": 1.3862944,
"_source": {
"title": "Dimitry", <-- Dimitry in title field has doube score
"second_title": "opster"
}
},
{
"_index": "60454337",
"_type": "_doc",
"_id": "2",
"_score": 0.6931472,
"_source": {
"title": "opster",
"second_title": "Dimitry"
}
}
]
Дайте мне знать, если у вас есть какие-либо сомнения в понимании этого.