Фильтрация по нескольким значениям внутри атрибута

У меня есть объект Post, который содержит набор комментариев, состоящий из строкового поля Text и булевого поля Deleted.

Я использую ElasticSearch для получения всех этих сообщений, имеющих комментарий, содержащий определенную строку. Но я хочу исключить эти комментарии с Deleted = True.

Я пытаюсь использовать bool-фильтр для постов следующим образом:

{
    "bool": {
        "must": [
            {
                "match": {
                    "comments.text": "the string to match",
                }
            },
            {
                "match": {
                    "comments.deleted": False,
                }
            },
        ],
    },
}

Тем не менее, как только комментарий будет удален (установлено Deleted=True), весь пост с таким комментарием будет исключен.

Я предполагаю, что это происходит потому, что фильтр не знает, что то, что я хочу, это соответствовать этим комментариям, которые соответствуют строке И не удалены.

Так что мой вопрос таков: Есть ли способ отфильтровать комментарии, к которым я хочу применить соответствие?

Заранее большое спасибо!

pd: Я работаю с Django для управления своим доменом, так что на самом деле Post.comments - это кверисет, который дает мне все комментарии этого поста.

Вернуться на верх