Elasticsearch вложенный поиск - не должен включать - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть документы, содержащие вложенный список

fixed_fields: [
    {
       id: 12,
       value: "someValue"
    },
    {
       id: 38,
       value: "someValue2"
    },
]

Теперь мне нужно найти все документы, которые не имеют фиксированного поля с id = 38

Я пробовал:

            "bool":{
              "must":[
                {
                  "nested":{
                    "path":"fixed_fields",
                    "filter":{
                      "bool":{
                        "must_not":[
                          {
                            "term":{
                              "fixed_fields.id":38
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              ]
            }

Но я получил все документы с любыми fixed_fields, в том числе с идентификатором 38.

Я использую эластичный в версии 2.4.6, иУ меня нет возможности обновить его

1 Ответ

0 голосов
/ 11 февраля 2019

Попробуйте вместо этого:

{
 "bool": {
    "must_not": [{
        "nested": {
            "path": "fixed_fields",
            "filter": {
                "term": {
                    "fixed_fields.id": 38
                }
            }
        }
    }]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...