【问题标题】:Overwrite/Update Existing Elasticsearch Index Mapping (geo_point) using Kibana使用 Kibana 覆盖/更新现有的 Elasticsearch 索引映射 (geo_point)
【发布时间】:2017-10-08 08:28:21
【问题描述】:

我正在尝试更新我的 elasticsearch 索引中 geo_point 字段的映射,但遇到了问题。我在 Kibana 中使用开发工具控制台。

geo_point 的数据采用双数组格式。我将 spark 与 elasticsearch-hadoop-5.3.1.jar 一起使用,数据进入 elasticsearch/kibana,但在我需要将其转换为 geo_point 时仍保留为数字格式。

似乎一旦定义了索引映射,我就无法更新它。我试过用下面的方法:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "my_location": {
          "type": "geo_point"
        }
      }
    }
  }
}

-但这会导致“索引已存在异常”错误。

感谢您的任何建议。

【问题讨论】:

    标签: elasticsearch kibana


    【解决方案1】:

    您使用的命令只是尝试使用提到的映射创建新索引。有关更多信息,请阅读第一个示例中的脚注here

    根据 Elasticsearch 文档,无法更新现有字段的映射。

    更新字段映射

    一般来说,现有字段的映射无法更新。那里 是这条规则的一些例外。例如:

    • 可以向对象数据类型字段添加新属性。
    • 可以将新的多字段添加到现有字段。
    • ignore_above 参数可以更新。

    由于geo_point不属于上述任何情况,您不能修改该字段的映射。

    您可能需要reindex 数据。

    【讨论】:

    • 谢谢你。我很欣赏你分享的信息。跟进,我发现如果我首先在开发工具控制台中使用上面的 put 方法为那个字段(geo_point 字段)创建索引和映射,然后我们可以使用 spark 摄取数据,它不会覆盖该字段的初始映射,因此这似乎是迄今为止最简单的解决方案。
    • @Rob 抱歉,我没有明白你想要表达的意思!
    • 是的,我现在明白了。在 elasticsearch 中称为explicit mappings。所以我们的想法不是让 elasticsearch 推断数据类型,而是可以预先定义映射然后摄取数据。
    猜你喜欢
    • 2019-04-16
    • 2021-06-10
    • 2017-03-11
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    相关资源
    最近更新 更多