Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Query DSL ›Объединённые запросы

Запрос Disjunction Max

Возвращает документы, соответствующие одному или нескольким вложенным запросам, называемым условиями запроса или условиями.

Если возвращаемый документ соответствует нескольким условиям запроса, запрос dis_max присваивает документу наибольший рейтинг релевантности из любого соответствующего условия, плюс увеличение для преодоления ничьи для дополнительных соответствующих подзапросов.

Пример запроса

resp = client.search(
    query={
        "dis_max": {
            "queries": [
                {
                    "term": {
                        "title": "Quick pets"
                    }
                },
                {
                    "term": {
                        "body": "Quick pets"
                    }
                }
            ],
            "tie_breaker": 0.7
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      dis_max: {
        queries: [
          {
            term: {
              title: 'Quick pets'
            }
          },
          {
            term: {
              body: 'Quick pets'
            }
          }
        ],
        tie_breaker: 0.7
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    dis_max: {
      queries: [
        {
          term: {
            title: "Quick pets",
          },
        },
        {
          term: {
            body: "Quick pets",
          },
        },
      ],
      tie_breaker: 0.7,
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "dis_max": {
      "queries": [
        { "term": { "title": "Quick pets" } },
        { "term": { "body": "Quick pets" } }
      ],
      "tie_breaker": 0.7
    }
  }
}

Параметры верхнего уровня для dis_max

queries
(Обязательный, массив объектов запроса) Содержит одно или несколько условий запроса. Возвращаемые документы должны соответствовать одному или нескольким из этих запросов. Если документ соответствует нескольким запросам, Elasticsearch использует наибольший рейтинг релевантности.
tie_breaker

(Необязательный, число с плавающей точкой) Число с плавающей точкой между 0 и 1.0, используемое для повышения рейтингов релевантности документов, соответствующих нескольким условиям запроса. По умолчанию 0.0.

Вы можете использовать значение tie_breaker, чтобы назначать более высокие рейтинги релевантности документам, содержащим один и тот же термин в нескольких полях, чем документам, содержащим этот термин только в лучшем из этих нескольких полей, не путая это с лучшим случаем двух различных терминов в нескольких полях.

Если документ соответствует нескольким условиям, запрос dis_max вычисляет рейтинг релевантности документа следующим образом:

  1. Взять рейтинг релевантности из соответствующего условия с наибольшим рейтингом.
  2. Умножить рейтинг из любых других соответствующих условий на значение tie_breaker.
  3. Добавить наибольший рейтинг к умноженным рейтингам.

Если значение tie_breaker больше, чем 0.0, все соответствующие условия учитываются, но условие с наибольшим рейтингом учитывается больше всего.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-dis-max-query.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API