Elasticsearch must_not внутри вложенного запроса - PullRequest
0 голосов
/ 09 октября 2018

Мой упругий поисковый индекс, имеющий вложенные поля.и я хочу использовать must, который содержит запрос must_not с вложенным запросом.Я пробовал запрос must_not отдельно следующим образом:

{
    "bool": {
        "must_not": [{
            "nested": {
                "path": "fields",
                "query": {
                    "terms": {
                        "fields.value.raw": [
                            "200"
                        ]
                    }
                }
            }
        }]
    }
}

запрос выше дает мне действительный результат, но когда я попробовал это с запросом must, то он не даст мне никакого результата. Я использую следующеезапрос:

{
        "bool": {
            "must": [{
                "nested": {
                    "path": "fields",
                    "query": {
                        "bool": {
                            "must": [{
                                "match": {
                                    "fields.uid": "number"
                                }
                            }, {
                                "bool": {
                                    "must_not": [{
                                        "nested": {
                                            "path": "fields",
                                            "query": {
                                                "terms": {
                                                    "fields.value.raw": [
                                                        "200"
                                                    ]
                                                }
                                            }
                                        }
                                    }]
                                }
                            }]
                        }
                    }
                }
            }]
        }
    }

запрос выше не дает мне действительный результат.Что не так в приведенном выше запросе?Как я могу использовать must_not в must с вложенным запросом?

1 Ответ

0 голосов
/ 09 октября 2018

Вы должны использовать must и must_not в одном и том же запросе bool.

{
    "bool": {
        "must_not": [{
            "nested": {
                "path": "fields",
                "query": {
                    "terms": {
                        "fields.value.raw": [
                            "200"
                        ]
                    }
                }
            }
        }],
        "must": [{
            "match": {
                "fields.uid": "number"
            }
        }]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...