elasticsearch 使用Kibana覆盖/更新现有Elasticsearch索引映射(地理点),elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 使用Kibana覆盖/更新现有Elasticsearch索引映射(地理点),elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 使用Kibana覆盖/更新现有Elasticsearch索引映射(地理点)

elasticsearch 使用Kibana覆盖/更新现有Elasticsearch索引映射(地理点),elasticsearch,kibana,elasticsearch,Kibana,我正在尝试更新elasticsearch索引中geo_point字段的映射,但遇到了问题。我正在Kibana中使用开发工具控制台 geo_点的数据采用双数组格式。我将spark与elasticsearch-hadoop-5.3.1.jar一起使用,数据将进入elasticsearch/kibana,但仍然是数字格式,而我需要将其转换为地理点 似乎一旦定义了索引映射,我就无法更新它。我已尝试使用以下方法: PUT my_index { "mappings": { "my_type":

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

geo_点的数据采用双数组格式。我将spark与elasticsearch-hadoop-5.3.1.jar一起使用,数据将进入elasticsearch/kibana,但仍然是数字格式,而我需要将其转换为地理点

似乎一旦定义了索引映射,我就无法更新它。我已尝试使用以下方法:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "my_location": {
          "type": "geo_point"
        }
      }
    }
  }
}
-但这会导致“索引已存在异常”错误


谢谢您的建议。

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

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

更新字段映射

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

  • 可以将新属性添加到对象数据类型字段中
  • 可以将新的多字段添加到现有字段中
  • 可以更新上面的ignore_参数
由于
geo_point
不属于上述任何情况,因此无法修改该字段的映射


您可能需要
reindex
数据。

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

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

更新字段映射

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

  • 可以将新属性添加到对象数据类型字段中
  • 可以将新的多字段添加到现有字段中
  • 可以更新上面的ignore_参数
由于
geo_point
不属于上述任何情况,因此无法修改该字段的映射


您可能需要
重新编制数据索引。

谢谢avr。我感谢你分享的信息。接下来,我发现如果我在开发工具控制台中使用上面的put方法首先为一个字段(geo_point字段)创建索引和映射,那么我们可以使用spark接收数据,它不会覆盖该字段的初始映射,因此这似乎是迄今为止最简单的解决方案。@Rob抱歉,我不明白你想表达什么!是的,我现在明白了。在elasticsearch中,它被称为显式映射。因此,我们的想法不是让elasticsearch推断数据类型,而是可以预先定义映射,然后接收数据。我感谢你分享的信息。接下来,我发现如果我在开发工具控制台中使用上面的put方法首先为一个字段(geo_point字段)创建索引和映射,那么我们可以使用spark接收数据,它不会覆盖该字段的初始映射,因此这似乎是迄今为止最简单的解决方案。@Rob抱歉,我不明白你想表达什么!是的,我现在明白了。在elasticsearch中,它被称为显式映射。因此,我们可以预先定义映射,然后接收数据,而不是让elasticsearch推断数据类型。