Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Query DSL ›Запросы на уровне терминов

Запрос Terms

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

Запрос terms аналогичен запросу term, за исключением того, что вы можете искать несколько значений.

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

Следующий поиск возвращает документы, где поле user.id содержит kimchy или elkbee.

GET /_search
{
  "query": {
    "terms": {
      "user.id": [ "kimchy", "elkbee" ],
      "boost": 1.0
    }
  }
}

Параметры верхнего уровня для запроса terms

<field>

(Необязательно, объект) Поле, в котором вы хотите выполнить поиск.

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

По умолчанию Elasticsearch ограничивает запрос terms максимальным количеством 65 536 терминов. Вы можете изменить это ограничение, используя настройку index.max_terms_count.

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

boost

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

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

Значения усиления относительны к значению по умолчанию 1.0. Значение усиления между 0 и 1.0 уменьшает балл релевантности. Значение больше 1.0 увеличивает балл релевантности.

Примечания

Выделение результатов запросов terms

Подсвечивание выполняется приближенно. Elasticsearch может не возвращать результаты подсветки для запросов terms в зависимости от:

  • Тип выделения
  • Количества терминов в запросе

Поиск по терминам

Поиск по терминам извлекает значения поля из существующего документа. Elasticsearch затем использует эти значения в качестве поисковых терминов для запроса. Это может быть полезно при поиске по большому набору терминов.

Для выполнения поиска по терминам поле _source должно быть включено. Вы не можете использовать межкластерный поиск для выполнения поиска по терминам на удаленном индексе.

По умолчанию Elasticsearch ограничивает запрос terms максимальным количеством 65 536 терминов. Это включает термины, извлеченные с помощью поиска по терминам. Вы можете изменить это ограничение, используя настройку index.max_terms_count.

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

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

Параметры поиска по терминам
index
(Обязательно, строка) Название индекса, из которого нужно извлечь значения поля.
id
(Обязательно, строка) ИД документа, из которого нужно извлечь значения поля.
path

(Обязательно, строка) Название поля, из которого нужно извлечь значения поля. Elasticsearch использует эти значения в качестве поисковых терминов для запроса.

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

routing
(Необязательно, строка) Пользовательское значение маршрутизации документа, из которого нужно извлечь значения терминов. Если при индексировании документа было предоставлено пользовательское значение маршрутизации, этот параметр обязателен.
Пример поиска по терминам

Чтобы увидеть, как работает поиск по терминам, попробуйте следующий пример.

  1. Создайте индекс с полем keyword с именем color.

    PUT my-index-000001
    {
      "mappings": {
        "properties": {
          "color": { "type": "keyword" }
        }
      }
    }
  2. Индексируйте документ с ID 1 и значениями ["blue", "green"] в поле color.

    PUT my-index-000001/_doc/1
    {
      "color":   ["blue", "green"]
    }
  3. Индексируйте другой документ с ID 2 и значением blue в поле color.

    PUT my-index-000001/_doc/2
    {
      "color":   "blue"
    }
  4. Используйте запрос terms с параметрами поиска по терминам для поиска документов, содержащих один или несколько тех же терминов, что и документ 2. Включите параметр pretty для более удобочитаемого ответа.

    GET my-index-000001/_search?pretty
    {
      "query": {
        "terms": {
            "color" : {
                "index" : "my-index-000001",
                "id" : "2",
                "path" : "color"
            }
        }
      }
    }

    Поскольку документы 2 и 1 оба содержат blue в качестве значения в поле color, Elasticsearch возвращает оба документа.

    {
      "took" : 17,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 2,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "my-index-000001",
            "_type" : "_doc",
            "_id" : "1",
            "_score" : 1.0,
            "_source" : {
              "color" : [
                "blue",
                "green"
              ]
            }
          },
          {
            "_index" : "my-index-000001",
            "_type" : "_doc",
            "_id" : "2",
            "_score" : 1.0,
            "_source" : {
              "color" : "blue"
            }
          }
        ]
      }
    }

© 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/7.17/query-dsl-terms-query.html

Spec-Zone.ru

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