запрос bool с фильтром не возвращает никаких документов - PullRequest
0 голосов
/ 13 ноября 2018

Простой запрос

"query": {
    "simple_query_string": { "query":"great guide" } 
},

возвращает мой документ, как и ожидалось, содержащий

"groups": [
        "Local Business"
],

Но если я использую фильтр, он не возвращает документов:

"query": {
        "bool":{
            "must":[
                 {"simple_query_string": { "query":"great guide" }} 
            ],
            "filter":{
              "terms":{
                "groups":["Local Business"]
              }
            }
        }
    },

Если я удаляю ключ и значения «фильтра», то документ извлекается.

Почему фильтр не соответствует документу?

1 Ответ

0 голосов
/ 13 ноября 2018

Если поле groups имеет тип ключевое слово , то упомянутый вами запрос работает должным образом.

Однако оно не будет работать, если поле groups будет иметь тип text .В этом случае приведенный ниже запрос будет действительно соответствовать тому, что вы ищете.

Запрос для группы - введите текст

POST <your_index_name>/_search
{  
   "query":{  
      "bool":{  
         "must":[  
            {  
               "simple_query_string":{  
                  "query":"great guide"
               }
            }
         ],
         "filter":{  
            "match":{  
               "groups":"Local Business"
            }
         }
      }
   }
}

Причина, по которой указанный вами запрос не работает дляполе типа text связано с тем, что это поле проходит этап Analysis , в котором по умолчанию используется Standard Analyzer , в котором он сначала преобразует Local Business в небольшие случаи, а затем сохраняет localи business как два отдельных слова в инвертированном индексе.

Elasticsearch даст вам результаты только в том случае, если слова, которые вы запрашиваете, соответствуют тому, что доступно в индексе.

И то, что делает keyword, сохраняет Local Business, как в инвертированном индексе.

Примечание: Вы можете попробовать запрос, заменив groups на groups.keyword, если отображение не было определено и создается динамически.

Надеюсь, что этопомогает!

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