【问题标题】:Elasticsearch alias type to reference multi fields引用多字段的 Elasticsearch 别名类型
【发布时间】:2019-08-16 17:41:30
【问题描述】:

我正在使用 Elasticsearch 别名字段来重命名映射中的某些字段,而无需重新索引所有内容。效果很好。现在我也想重命名一些多字段,如下所示:

"message":{
  "type":"text",
  "fields":{
    "raw":{
      "type":"keyword"
    }
  }
}

这是一个名为 message 的分析字段和一个名为 message.raw 的关键字版本。我可以像这样为message 起一个别名:

"title":{
  "type":"alias",
  "path":"message"
}

但我似乎无法弄清楚如何为 message.raw 字段设置别名。我尝试了不同的方法。

  1. 怀疑这可以通过仅使用 title.raw 并希望 Elasticsearch 将其转换为 message.raw 来开箱即用。没用。

  2. raw 指定为title 中的字段:

"title":{
    "type":"alias",
    "path":"message",
    "fields":{
        "raw":{
            "type":"alias",
            "path":"message.raw"
        }
    }
}

更新映射时会产生以下错误:[title] 的映射定义具有不受支持的参数:[fields : {raw={type=alias, path=message.raw}}]

  1. title.raw 指定为新字段:
"title":{
    "type":"alias",
    "path":"message"
},
"title.raw":{
    "type":"alias",
    "path":"message.raw"
}

这会导致错误:无法将字段别名映射 [title] 与不是字段别名的映射合并。

是否以某种方式支持?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    不支持从别名引用多字段。来自documentationaliases cannot be used as the target of copy_to or in multi-fields.

    您可以为不带点的多字段创建别名。您需要做的只是以不同的方式命名 title.raw 字段,例如title_raw:

    "title":{
        "type":"alias",
        "path":"message"
    },
    "title_raw":{                    <--- change the name here
        "type":"alias",
        "path":"message.raw"
    }
    

    然后就可以像title_raw一样查询message.raw了。

    【讨论】:

    • 不确定我明白了。那可以让我按title.raw 字段搜索吗?
    • 您可以使用title_raw 进行搜索,就像使用message.raw 进行搜索一样。 title_raw 为子字段 message.raw 起别名。这只是一个命名问题,因为名称中的点
    • 我猜这不能解决问题。这里的任务是使用所有子字段为 message 字段起别名。我今天可以查询message.raw,为什么我要title.raw 给它起别名。我可以看到我可以只使用title_raw,但是当通过 Kibana 查询时,每个人都需要知道该字段的确切名称不同。
    • 好吧,无论如何,字段别名都是一种“黑客”,这是一种临时解决方案,直到发生新的重新索引或旧索引被删除。引入别名字段的主要原因是能够在查询较新索引的同时查询较旧的时间序列索引(具有旧字段名称),希望较旧的索引有一天会消失,并且只有具有新模式的索引存在。你不应该长期依赖它。此外,文档提到aliases cannot be used as the target of copy_to or in multi-fields.
    猜你喜欢
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2022-01-27
    相关资源
    最近更新 更多