Эластичный поиск, сопоставьте несколько терминов в одной строке

Прежде всего, я следую учебнику по упругому поиску, расположенному здесь. Я пытаюсь выполнить поиск с несколькими строками запроса.

В моем индексе есть несколько полей, но меня интересует "путь".

Я знаю, что у меня есть хотя бы этот путь

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
Другие вопросы по тегам