Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Отображение ›Параметры отображения

copy_to

Параметр copy_to позволяет копировать значения нескольких полей в групповое поле, которое затем можно использовать для запросов как одно поле.

Если вы часто выполняете поиск по нескольким полям, можно ускорить поиск, используя copy_to для поиска по меньшему количеству полей. См. Поиск по наименьшему количеству полей.

Например, поля first_name и last_name можно скопировать в поле full_name следующим образом:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "first_name": {
        "type": "text",
        "copy_to": "full_name" 
      },
      "last_name": {
        "type": "text",
        "copy_to": "full_name" 
      },
      "full_name": {
        "type": "text"
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "first_name": "John",
  "last_name": "Smith"
}

GET my-index-000001/_search
{
  "query": {
    "match": {
      "full_name": { 
        "query": "John Smith",
        "operator": "and"
      }
    }
  }
}

Значения полей first_name и last_name копируются в поле full_name.

Поля first_name и last_name по-прежнему можно использовать для запроса имени и фамилии соответственно, но поле full_name можно использовать для запроса и имени, и фамилии.

Некоторые важные моменты:

  • Копируется значение поля, а не термины (которые получаются в результате процесса анализа).
  • Исходное поле _source не будет изменено, чтобы отобразить скопированные значения.
  • Одно и то же значение можно скопировать в несколько полей с помощью "copy_to": [ "field_1", "field_2" ].
  • Нельзя копировать рекурсивно через промежуточные поля, такие как поле copy_to в поле field_1 для полей field_2 и copy_to в поле field_2 для полей field_3, ожидая, что индексация в field_1 приведет к field_3. Вместо этого используйте copy_to напрямую для копирования в несколько полей из исходного поля.

copy-to не поддерживается для типов полей, где значения представляют собой объекты, например, date_range

© 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/copy-to.html

Spec-Zone.ru

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