Всякий раз, когда вы сталкиваетесь с такими проблемами, попробуйте разбить запрос.У вас есть Соответствующий запрос и Срок запроса .Запустите их по отдельности и посмотрите, что не работает.
Из того, что я понимаю, похоже, что ваше поле deep_sub имеет тип text
, и это означает, что запрос термина не возвращает результатов.
Вам необходимо создать его эквивалентный элемент, используя keyword
type , а затем запустить Term Query для него для точных совпадений.
По вышеуказанной ссылке у нас есть следующая информация:
Поля ключевых слов доступны для поиска только по их точному значению.
Если вы не контролируетеmapping, то есть если ваше отображение имеет динамический тип, то у вас должно быть доступно поле с эквивалентным ключевым словом, равное deep_sub.keyword
. Проверить это можно с помощью команды GET <your_index_name>/_mapping
.тогда сделайте следующее:
POST <your_index_name>/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":{
"query":"xbox"
}
}
},
{
"terms":{
"deep_sub.keyword":[ <----- Change This
"Konsol Oyunları",
"Konsol Aksesuarları"
]
}
}
]
}
},
"from":0,
"size":50
}
Дайте мне знать, если это поможет!