Я пытаюсь использовать этот запрос, чтобы получить все документы с закрытым или ожидающим статусом или вообще без статуса, но этот запрос всегда ничего не возвращает.

"query": {
    "bool": {
        "should": [
            "terms": {
                "status": ["closed","pending"]
            },
            "missing":{
                "field":"status"
            }
        ]
    }
}

Индивидуально запросы работают. Если я использую: "запрос": { "bool": { "должен": [ "термины": { «статус»: [«закрыто», «ожидает рассмотрения»] } ] } }

Затем он возвращает 2 документа.

И если я использую

"query": {
    "bool": {
        "should": [               
            "missing":{
                "field":"status"
            }
        ]
    }
}

Он возвращает 3.

Эти результаты верны для каждого запроса. Я просто хочу объединить 2 запроса и получить результат 5. Что не так с первым запросом?

1
Cledson Araújo 19 Дек 2016 в 02:44

1 ответ

Лучший ответ

Этот запрос ES 5.0, и он должен работать в версии 2.0

POST es1/example/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "terms": {
            "status": [
              "closed",
              "pending"
            ]
          }
        },
        {
          "bool": {
            "must_not": [
              {
                "exists": {
                  "field": "status"
                }
              }
            ]
          }
        }
      ]
    }
  }
}
2
Vova Bilyachat 19 Дек 2016 в 04:07