elasticsearch,Amazon Web Services,React Native,elasticsearch" /> elasticsearch,Amazon Web Services,React Native,elasticsearch" />

Amazon web services Aws Elasticsearch:如何将位置{lat:float,lon:float}的映射类型更改为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_点 搜索查询过滤器示例

服务: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 {映射:…}

快乐的一天