Тип поля псевдонима
Карта alias определяет альтернативное имя для поля в индексе. Псевдоним может быть использован вместо целевого поля в запросах поиска и других API, таких как возможности полей.
PUT trips
{
"mappings": {
"properties": {
"distance": {
"type": "long"
},
"route_length_miles": {
"type": "alias",
"path": "distance"
},
"transit_mode": {
"type": "keyword"
}
}
}
}
GET _search
{
"query": {
"range" : {
"route_length_miles" : {
"gte" : 39
}
}
}
} | Путь к целевому полю. Обратите внимание, что это должен быть полный путь, включая все родительские объекты (например, |
Практически все компоненты запроса поиска принимают псевдонимы полей. В частности, псевдонимы могут быть использованы в запросах, агрегациях, сортировке полей, а также при запросе docvalue_fields, stored_fields, предложений и выделений. Скрипты также поддерживают псевдонимы при доступе к значениям полей. См. раздел неподдерживаемых API для исключений.
В некоторых частях запроса поиска и при запросе возможностей полей могут быть предоставлены шаблоны с подстановкой. В этих случаях шаблон с подстановкой будет соответствовать псевдонимам полей в дополнение к конкретным полям:
GET trips/_field_caps?fields=route_*,transit_mode
Целевые псевдонимы
Существуют некоторые ограничения на целевой объект псевдонима:
- Целевой объект должен быть конкретным полем, а не объектом или другим псевдонимом поля.
- Целевое поле должно существовать в момент создания псевдонима.
- Если определены вложенные объекты, псевдоним поля должен иметь тот же уровень вложенности, что и его целевое поле.
Кроме того, псевдоним поля может иметь только один целевой объект. Это означает, что использовать псевдоним поля для запроса по нескольким целевым полям в одном операторе нельзя.
Псевдоним можно изменить, чтобы он ссылался на новый целевой объект, используя обновление карты. Известное ограничение заключается в том, что если какие-либо сохранённые запросы percolator содержат псевдоним поля, они по-прежнему будут ссылаться на его исходный целевой объект. Более подробную информацию можно найти в документации percolator.
Неподдерживаемые API
Записи в псевдонимы полей не поддерживаются: попытка использования псевдонима в запросе индексации или обновления приведёт к ошибке. Аналогично, псевдонимы не могут быть целевым объектом copy_to или в многопольных структурах.
Поскольку имена псевдонимов отсутствуют в источнике документа, псевдонимы нельзя использовать при фильтрации источника. Например, следующий запрос вернёт пустой результат для _source:
GET /_search
{
"query" : {
"match_all": {}
},
"_source": "route_length_miles"
} В настоящее время только API поиска и возможностей полей будут принимать и разрешать псевдонимы полей. Другие API, принимающие имена полей, такие как API векторов терминов, не могут использоваться с псевдонимами полей.
Наконец, некоторые запросы, такие как terms, geo_shape и more_like_this, позволяют извлекать информацию о запросе из индексированного документа. Поскольку псевдонимы полей не поддерживаются при извлечении документов, часть запроса, которая определяет путь поиска, не может ссылаться на поле по его псевдониму.
© 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/field-alias.html