Amazon web services Aws Elasticsearch:如何将位置{lat:float,lon:float}的映射类型更改为geo_点 有人能指导我将位置的映射类型更改为地理点吗?
服务:Aws ElasticSearch(6.2版) 数据库:dynamodb 我正在使用aws弹性搜索服务根据我的位置筛选值。 根据文档,我创建了一个触发器lambda函数dbtoEs,它是在记录被添加到索引后不久的python代码 因为我在dynamodb中的位置类型是 类型位置{ lat:浮动 洛恩:浮子 } 当我转到Aws ElasticSearch并检入索引时,该字段的映射类型也是 位置{ 横向浮动 浮子 } 根据弹性地理距离查询(),位置的映射类型应为geo_点 搜索查询过滤器示例Amazon web services Aws Elasticsearch:如何将位置{lat:float,lon:float}的映射类型更改为geo_点 有人能指导我将位置的映射类型更改为地理点吗?,amazon-web-services,react-native,elasticsearch,Amazon Web Services,React Native,elasticsearch,服务:Aws ElasticSearch(6.2版) 数据库:dynamodb 我正在使用aws弹性搜索服务根据我的位置筛选值。 根据文档,我创建了一个触发器lambda函数dbtoEs,它是在记录被添加到索引后不久的python代码 因为我在dynamodb中的位置类型是 类型位置{ lat:浮动 洛恩:浮子 } 当我转到Aws ElasticSearch并检入索引时,该字段的映射类型也是 位置{ 横向浮动 浮子 } 根据弹性地理距离查询(),位置的映射类型应为geo_点 搜索查询过滤器示例
filter:[
{
geo_distance:{
distance:"2000 km",
location:{
lon:77.676,
lat:12.998
},
}
},
{
range:{
createdAt:{
gte:"now-1d/d"
}
}
}
],
搜索响应
{
"took":4,
"timed_out":false,
"_shards":{
"total":5,
"successful":4,
"skipped":0,
"failed":1,
"failures":[
{
"shard":4,
"index":"spot",
"node":"*******",
"reason":{
"type":"query_shard_exception",
"reason":"failed to find geo_point field
[location]",
"index_uuid":"**********",
"index":"***"
}
}
]
},
"hits":{
"total":0,
"max_score":null,
"hits":[
]
}
}
**Result Required: Filtered results should be based on location**
您需要在索引第一条记录之前创建映射。在没有映射的情况下,elasticsearch动态地解释类型。在这种情况下,它是浮动的
查找用于elasticsearch的映射api,并使用lat longs为geo_point field创建映射。我已经解决了这个问题 帮助:最初我遇到了如何单独更改类型的困难,当我使用dynamodb实现弹性搜索时,它会在dynamo DB中添加记录后自动创建索引,我们无法更改dynamo DB中的位置类型,因为它不支持。我们必须更改Elasticsearch索引中的类型,因此请遵循以下步骤 1) 使用kibana UI手动更改弹性搜索映射类型。 默认情况下,映射类型将与列数据类型相同,我们必须将位置类型更改为geo_point 2) 获取/xyz/\u映射 它返回所有类型为的映射 复制映射 3) 删除XYZ/ 删除映射 4) 放XYZ/ 在复制的映射中,将位置的映射类型更改为geo_point,然后 使用创建映射 放XYZ {映射:…} 快乐的一天