ElasticSearch bool запрос в сочетании с must и filter - PullRequest
0 голосов
/ 07 сентября 2018

вasticsearch вы знаете, почему

{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              conditions1
            ]
          }
        },
        {
          "bool": {
            "must": [
              conditions2
            ]
          }
        }
      ],
      "filter": [
        conditions3
      ]
    }
  }
}

всегда находит документы, если условие3 верно даже когда условие 2 и условие 1 ложно

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Путем упаковки должен в решенную проблему. Пожалуйста, дайте мне знать, если у кого-нибудь есть более чистое решение

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "bool": {
                  "must": [
                    {
                      condition1
                    },
                    {
                      condition2
                    }
                  ]
                }
              }
            ]
          }
        }
      ],
      "filter": [
        {
          condition3
        }
      ]
    }
  }
}
0 голосов
/ 07 сентября 2018

Согласно документации на https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html:

Если запрос bool находится в контексте запроса и имеет необходимость или фильтр затем документ будет соответствовать запросу bool, даже если ни один из если запросы совпадают. В этом случае эти пункты используются только для повлиять на счет. Если запрос bool является контекстом фильтра или имеет не должен или не фильтрует, по крайней мере, один из запросов должен сопоставьте документ, чтобы он соответствовал запросу bool. Такое поведение может быть явно контролируется настройками параметра Minimum_should_match.

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