别名字段类型
1.0 版引入
别名字段类型为现有字段创建另一个名称。您可以在搜索和字段功能 API 操作中使用别名,但有一些例外。要设置别名,您需要在path
参数中指定原始字段名称。
示例
PUT movies
{
"mappings" : {
"properties" : {
"year" : {
"type" : "date"
},
"release_date" : {
"type" : "alias",
"path" : "year"
}
}
}
}
参数
参数 | 描述 |
---|---|
路径 | 原始字段的完整路径,包括所有父对象。例如,parent.child.field_name。必填。 |
别名字段
别名字段必须遵守以下规则
- 一个别名字段只能有一个原始字段。
- 在嵌套对象中,别名必须与原始字段具有相同的嵌套级别。
要更改别名引用的字段,请更新映射。请注意,任何先前存储的渗透查询中的别名仍将引用原始字段。
原始字段
别名的原始字段必须遵守以下规则
- 原始字段必须在创建别名之前创建。
- 原始字段不能是对象或另一个别名。
在搜索 API 操作中使用别名
您可以在搜索 API 的以下读取操作中使用别名
- 查询
- 排序
- 聚合
stored_fields
docvalue_fields
- 建议
- 高亮显示
- 访问字段值的脚本
在字段功能 API 操作中使用别名
要在字段功能 API 中使用别名,请在 fields 参数中指定它。
GET movies/_field_caps?fields=release_date
例外情况
在以下情况下不能使用别名
- 在写入请求中,例如更新请求。
- 在多字段中或作为
copy_to
的目标。 - 作为用于过滤结果的 _source 参数。
- 在接受字段名称的 API 中,例如术语向量。
- 在
terms
、more_like_this
和geo_shape
查询中(检索文档时不支持别名)。
通配符
在搜索和字段功能通配符查询中,原始字段和别名都与通配符模式匹配。
GET movies/_field_caps?fields=release*