Эластичный поиск, сопоставьте несколько терминов в одной строке
Прежде всего, я следую учебнику по упругому поиску, расположенному здесь. Я пытаюсь выполнить поиск с несколькими строками запроса.
В моем индексе есть несколько полей, но меня интересует "путь".
Я знаю, что у меня есть хотя бы этот путь
path: "ops/TopRelation/...."
в моем индексе. Я подтвердил это.
Как же тогда, этот запрос ничего не возвращает.
{
"query":{
"match":{
"path":{
"query": "ops toprelation",
"operator": "and"
}
}
}
}
Но этот запрос возвращает ожидаемые результаты.
{
"query": {
"bool": {
"must": [
{ "match": { "path": "ops" }},
{ "match": { "path": "toprelation" }}
]
}
}
}
Я думал, что верхний запрос в основном тот, который использует нижний запрос внутренне? Действительно, пример в учебнике, кажется, указывает на это.
Because the match query has to look for two terms — ["brown","dog"] — internally it
has to execute two term queries and combine their individual results into the overall
result. To do this, it wraps the two term queries in a bool query, which we will
examine in detail in Combining queries below.
1 ответ
Если вы используете "или" вместо "и" в "операторе", это возвращает какие-либо результаты?
Не могли бы вы поделиться отображением для этого индекса.
GET <IndeName>/<Type>/_mapping