Найти документы с хотя бы одним нулевым значением в массиве объектов - PullRequest
0 голосов
/ 26 апреля 2019

Наша структура данных выглядит следующим образом

{
    "foo": "bar",
    "baz": [
        {
            "qux": true
        },
        {
            "qux": null
        },
        {
            "qux": false
        }
    ]
}

В других документах количество элементов в массиве baz может отличаться.

Мы ищем документы, которые имеют хотя бы одно значение null для qux в массиве baz.

Мы пробовали:

{
    "query": {
        "bool": {
            "must_not": {
                "exists": {
                    "field": "baz.qux"
                }
            }
        }
    }
}

Однако, это не вернет документы, которые имеют, например, одно true и одно null значение для qux в массиве baz.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Этого можно добиться с помощью вложенного отображения и вложенного запроса .

Отображения:

{
    "properties": {
        "foo": {
            "type": "text"
        },
        "baz": {
            "type": "nested",
            "properties": {
                "qux": {
                    "type": "boolean"
                }
            }
        }
    }
}

Запрос:

{
    "query": {
        "nested": {
            "path": "baz",
            "query": {
                "bool": {
                    "must_not": {
                        "exists": {
                            "field": "baz.qux"
                        }
                    }
                }
            }
        }
    }
}
0 голосов
/ 26 апреля 2019

Вы можете просто проверить, является ли поле пустым или нет, используя отсутствующий запрос.

{
    "query" : {
        "constant_score" : {
            "filter": {
                "missing" : { "field" : "baz.qux" }
            }
        }
    }
}

Вы также можете проверить эластичный документ по ссылке ниже:

Документация: Нулевой запрос

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