Понимание запроса Elasticsearch Bool - PullRequest
0 голосов
/ 04 июня 2018

Я портирую (с ES 1.3 на ES 6) старые API запросов, чтобы использовать новые клиентские API Rest High Level. У меня есть следующие вопросы относительно двух упомянутых ниже запросов

  1. Оба запроса одинаковы.Если нет, в чем разница?
  2. Если оба запроса различны, следует ли мне использовать первый запрос для операции и для репликации старой логики AndFilterBuilder (версия ES 1.3)

ПервыйЗапрос:

{
  "bool" : {
    "filter" : [
      {
        "bool" : {
          "must" : [
            {
              "exists" : {
                "field" : "test",
                "boost" : 1.0
              }
            },
            {
              "term" : {
                "key" : {
                  "value" : "value",
                  "boost" : 1.0
                }
              }
            }
          ],
          "adjust_pure_negative" : true,
          "boost" : 1.0
        }
      }
    ],
    "adjust_pure_negative" : true,
    "boost" : 1.0
  }
}

Второй запрос:

{
  "bool" : {
    "filter" : [
      {
        "exists" : {
          "field" : "test",
          "boost" : 1.0
        }
      },
      {
        "term" : {
          "key" : {
            "value" : "value",
            "boost" : 1.0
          }
        }
      }
    ],
    "adjust_pure_negative" : true,
    "boost" : 1.0
  }
}

1 Ответ

0 голосов
/ 04 июня 2018

Требуется ли оценка?

Если оценка игнорируется, они одинаковы, и я бы использовал filter над must, поскольку это делает его пригодным для кэширования.

При оценкетребуется, используйте must.

Документация Elasticsearch объясняет это следующим образом:

Предложение запроса, используемое в контексте запроса, отвечает на вопрос «Насколько этот документ соответствует этому запросупредложение? »

В контексте фильтра предложение запроса отвечает на вопрос« Соответствует ли этот документ данному предложению запроса? ». Ответ прост: Да или Нет - баллы не рассчитываются.

must использует контекст запроса, filter использует контекст фильтра.

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