elasticsearch 7.x mapper[location]无法从类型[geo\u point]更改为[text]

egdjgwm8  于 2021-06-09  发布在  ElasticSearch
关注(0)|答案(1)|浏览(697)

我在elasticsearch中有一个索引,其位置字段Map为地理位置点。这是“索引管理设置”的“Map”选项卡中的内容。

{
  "mappings": {
    "_doc": {
      "properties": {
        "location": {
          "type": "geo_point"
        }
      }
    }
  }
}

根据elasticsearch上的geo point文档,我应该可以将此作为“lat,lon”字符串发送
这是发送到elastic的json中的一个位置的值

'location': '32.807078,-89.908972'

我收到了这个错误信息

RequestError(400, 'illegal_argument_exception', 'mapper [location] cannot be changed from type [geo_point] to [text]')

更新
我能够得到数据流,但现在它进来的文本数据,而不是地理点!
这是在我的索引Map和其他Map中

这在数据里

即使有Map,数据是文本,我无法在Map中使用它。
解决方案
除了核对答案,还需要这样做。
转到主页->管理->kibana->索引模式
删除了原来的索引模式,并创建了一个新的,现在它被视为地理数据!

ogsagwnx

ogsagwnx1#

在索引Map的基础上,您似乎正在使用7.x之前的elasticsearch版本。
我已经使用问题中提供的索引Map(使用版本6.8)为文档编制了索引。别忘了加上 _doc (或索引Map中使用的类型)在url中(索引数据时)
索引Map:

{
  "mappings": {
    "_doc": {
      "properties": {
        "location": {
          "type": "geo_point"
        }
      }
    }
  }
}

索引数据:
将文档发布到elasticsearch时,请确保url的格式如下所述:

PUT my_index/_doc/1

{
  "location": "41.12,-71.34" 
}

答复:

{
  "_index": "65076754",
  "_type": "_doc",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 0,
  "_primary_term": 1
}

编辑1:
根据下面的评论,op使用的是7.x
使用7.x的索引Map

{
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_point"
      }
    }
  }
}

相关问题