Пустая строка не сопоставляется вasticsearch - PullRequest
1 голос
/ 01 ноября 2019

У меня много документов с uID:. Чтобы запросить эти документы, я запрашиваю, как показано ниже -

'query': {
           'term':  {
               'uID': ''
             }
    }

Но он не получает никаких документов. Почему это не бросать какой-либо документ? Есть ли другой способ сделать это?

1 Ответ

1 голос
/ 01 ноября 2019

Даже с анализатором по умолчанию вы можете выполнять такой вид поиска: используйте фильтр скриптов, который работает медленнее, но может обрабатывать пустую строку:

curl -XPOST 'http://localhost:3000/_search' -d 
{
 "query": {
   "filtered": {
     "filter": {
       "script": {
         "script": "term. uID.length() == 0"
       }
     }
   }
 }
}

Он вернет документ с пустой строкой как _contentбез специального отображения

Как указано @js_gandalf, для ES> 5.0 это не рекомендуется. Вместо этого вы должны использовать: query-> bool-> filter-> script, как в https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

q=!(yourfield.keyword:"")

Пожалуйста, перейдите по ссылке ниже для получения дополнительной информации. https://www.elastic.co/guide/en/elasticsearch/reference/6.5/query-dsl-query-string-query.html#query-string-syntax

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