Не удается найти данные с фильтром - PullRequest
0 голосов
/ 21 апреля 2019

версия эластичного поиска: 6,4

Вот мои текущие данные:

enter image description here

Я хочу найти продукты с именем Xbox. Я использую ключевое слово match, но это не работает.

Ниже мой упругий поисковый запрос:

{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name": {
                            "query": "xbox"
                        }
                    }
                },
                {
                    "terms": {
                        "deep_sub": [
                            "Konsol Oyunları",
                            "Konsol Aksesuarları"
                        ]
                    }
                }
            ]
        }
    },
    "from": 0,
    "size": 50
}

1 Ответ

0 голосов
/ 22 апреля 2019

Всякий раз, когда вы сталкиваетесь с такими проблемами, попробуйте разбить запрос.У вас есть Соответствующий запрос и Срок запроса .Запустите их по отдельности и посмотрите, что не работает.

Из того, что я понимаю, похоже, что ваше поле 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
}

Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...