Мне нужно, чтобы строка запроса соответствовала только в том случае, если она точно такая же.
Согласно эластичной документации в запросе строки запроса:
Пробелы не учитываютсяоператоры, это означает, что город Нью-Йорк будет передан «как есть» на анализатор, настроенный для поля.Если поле является полем ключевых слов, анализатор создаст один термин Нью-Йорк, и построитель запросов будет использовать этот термин в запросе.Если вы хотите запрашивать каждый термин отдельно, вам нужно добавить явные операторы вокруг этих терминов (например, new AND york AND city).
Я создал индекс testingindex и добавил случайные данные:
- banna af
- тестирование CD af
- тестирование CD
- af телевидение
- тестирование ab
Сообщение:
POST testingindex/_doc/5
{
"name":"banna af"
}
Поиск:
GET testingindex/_search?explain
{
"size": 10,
"query": {
"bool": {
"must": [
{
"query_string": {
"fuzziness": 0,
"phrase_slop": 0,
"default_operator": "OR",
"minimum_should_match": "99%",
"fields": [
"name"
],
"query":"(testing af) OR (banna af)"
}
}
]
}
}
}
Результаты:
"hits" : [
{
"_index" : "testingindex",
"_type" : "_doc",
"_id" : "6",
"_score" : 2.0794415,
"_source" : {
"name" : "banna af"
}
},
{
"_index" : "testingindex",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.8630463,
"_source" : {
"name" : "cd testing af"
}
},
{
"_index" : "testingindex",
"_type" : "_doc",
"_id" : "2",
"_score" : 0.6931472,
"_source" : {
"name" : "testing cd"
}
},
{
"_index" : "testingindex",
"_type" : "_doc",
"_id" : "5",
"_score" : 0.5753642,
"_source" : {
"name" : "af television"
}
},
{
"_index" : "testingindex",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "testing ab"
}
}
]
Если я поменяю оператора на:
"default_operator": "AND",
Я получаю правильные результаты.
Но если я изменю запрос на:
"query":"(testing af) OR (banna af) OR (badfadfaf)"
Я не получаю результатов, мне все еще нужны результаты, чтобы вернуться, которые соответствуют.
Как мне получить тестирование компакт-дисков af и banna af , которые будут единственными возвращенными результатами?