Alias 字段类型

Alias 字段类型为现有字段创建另一个名称。您可以在搜索字段能力 API 操作中使用别名,但存在一些例外情况。要设置别名字段,需要在 path 参数中指定原始字段的名称。

示例

PUT movies 
{
  "mappings" : {
    "properties" : {
      "year" : {
        "type" : "date"
      },
      "release_date" : {
        "type" : "alias",
        "path" : "year"
      }
    }
  }
}

参数

参数 描述
path 原始字段的完整路径,包括所有父对象。例如:parent.child.field_name。必需。

别名字段

别名字段必须遵守以下规则:

  • 一个别名字段只能有一个原始字段。

  • 在嵌套对象中,别名必须与原始字段具有相同的嵌套层级。

要更改别名引用的字段,需要更新映射。请注意,任何先前存储的渗透器查询中的别名仍将引用原始字段。

原始字段

别名的原始字段必须遵守以下规则:

  • 原始字段必须在别名创建之前就已存在。

  • 原始字段不能是对象或另一个别名。

在搜索 API 操作中使用别名

您可以在搜索 API 的以下读取操作中使用别名:

  • 查询

  • 排序

  • 聚合

  • stored_fields

  • docvalue_fields

  • 建议

  • 高亮显示

  • 访问字段值的脚本

在字段能力 API 操作中使用别名

要在字段能力 API 中使用别名,请在 fields 参数中指定它。

GET movies/_field_caps?fields=release_date

例外情况

在以下情况下不能使用别名:

  • 写入请求中,例如更新请求。

  • 在多字段中或作为 copy_to 的目标。

  • 作为过滤结果的 _source 参数。

  • 在需要字段名的 API 中,例如词项向量 API。

  • termsmore_like_thisgeo_shape 查询中(检索文档时不支持别名)。

通配符

在搜索和字段能力的通配符查询中,原始字段和别名都会与通配符模式进行匹配。

GET movies/_field_caps?fields=release*