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"
}
}
}
} | Значения полей | |
| Поля |
Некоторые важные моменты:
- Копируется значение поля, а не термины (которые получаются в результате процесса анализа).
- Исходное поле
_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