У меня много документов с uID:. Чтобы запросить эти документы, я запрашиваю, как показано ниже -
uID:
'query': { 'term': { 'uID': '' } }
Но он не получает никаких документов. Почему это не бросать какой-либо документ? Есть ли другой способ сделать это?
Даже с анализатором по умолчанию вы можете выполнять такой вид поиска: используйте фильтр скриптов, который работает медленнее, но может обрабатывать пустую строку:
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