Elasticsearch: запрос constant_score против запроса bool.filter - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь добиться точного совпадения с помощью Elasticsearch (поэтому мне не важно забивать здесь)

Я вижу, что есть 2 способа сделать это:

{
    "query" : {
        "constant_score" : {
            "filter" : {
                "term" : {
                    "exact_match_field" : "hello world !"
                }
            }
        }
    }
}

или

{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "exact_match_field": "hello world !"
        }
      }
    }
  }
}

И работает, и дает мне желаемый результат. Какая разница между ними? Есть ли преимущества в производительности при использовании одного против другого?

(я использую Elasticsearch V 5.6)

Спасибо!

1 Ответ

0 голосов
/ 02 июля 2018

Запрос с постоянной оценкой дает равную оценку любому подходящему документу, независимо от каких-либо факторов оценки, таких как TF, IDF и т. Д. Это может быть использовано, когда вам все равно, соответствует ли документ документу, а просто, если документ соответствует или нет, и дать оценку тоже, в отличие от фильтра.

Запрос constant_score принимает аргумент надстройки, который устанавливается как оценка для каждого возвращаемого документа в сочетании с другими запросами. По умолчанию надстройка установлена ​​на 1.

Если вы заинтересованы ниже, ссылка даст вам более глубокое понимание

https://www.compose.com/articles/elasticsearch-query-time-strategies-and-techniques-for-relevance-part-ii/

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