поиск документа с пустым / пустым полем объекта вasticsearch - PullRequest
0 голосов
/ 30 января 2020

У меня есть индексasticsearch со следующим отображением, некоторые документы содержат объекты статуса {id: 1, status: «failed»}, а некоторые имеют значение null, похоже, я не могу найти способ поиска документов, имеющих «status». name "as [" failed "," null "," пройдено "] (документы, в которых статус либо не пройден, либо пройден, либо не установлен / не указан). например, выполнение запроса термина, как показано ниже, приводит к пустому набору результатов

{
"name":{
"type":"keyword"
}
 "status": {
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "keyword"
                    }
                }
            }
}

запрос:

{
"terms": {
  "status.name": [  "failed", "null" ]
   }

Также попытался установить отображение status.name как "null_value": "null"

1 Ответ

0 голосов
/ 31 января 2020

Используйте запрос bool с предложениями only should, что требует, чтобы хотя бы один из ваших запросов совпадал. Вы можете запросить документы, не имеющие поля или имеющие нулевое значение в этом поле, поместив запрос exists в условие must_not запроса bool (см. Elasticsearch Reference: Exists- запрос ).

GET myindex/_search
{
  "query": {
    "bool": {
      "should": [
        {"term": {"status.name": {"value": "failed"}}},
        {"term": {"status.name": {"value": "passed"}}},
        {"bool": {"must_not": {"exists": {"field": "status.name"}}}}
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...