AWS Elasticsearch:如何将位置{lat:float,lon:float}的映射类型更改为geo_point

有人可以指导我将位置的地图类型更改为geo_point吗??

服务:AWS ElasticSearch(6.2版) 数据库:dynamodb

我正在使用aws弹性搜索服务根据我的位置过滤值。 根据文档,我创建了一个触发器lambda函数dbtoEs,这是在添加记录索引后不久的python代码。

因为我在dynamodb中的位置类型是     输入位置{            lat:浮动            lon:浮动     }

当我转到AWS ElasticSearch并检查索引时,此字段的映射类型也是       位置 {            浮动            lon float       }

根据弹性地理距离查询(https://www.elastic.co/guide/en/elasticsearch/reference/6.2/query-dsl-geo-distance-query.html),位置的映射类型应为 geo_point

搜索查询过滤器示例

    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**
awfvfhpHE 回答:AWS Elasticsearch:如何将位置{lat:float,lon:float}的映射类型更改为geo_point

您需要在索引第一条记录之前创建映射。如果没有映射,elasticsearch会动态解释类型。在这种情况下,它是浮动的。

寻找用于Elasticsearch的映射API,并使用经纬度为geo_point字段创建映射。

,

我已经解决了问题

帮助:最初我面临如何单独更改类型的困难,当我使用dynamodb实现弹性搜索时,一旦在dynamo DB中添加了记录,它就会自动创建索引,我们无法更改dynamo DB中的位置类型因为它不支持。我们必须更改Elasticsearch索引的类型,所以请按照以下步骤

1)使用kibana UI手动更改Elastic Search映射类型。 默认情况下,映射类型将与列数据类型相同,我们必须将位置类型更改为geo_point。

2)GET / xyz / _mappings 它返回所有类型的映射 复制映射

3)删除XYZ / 删除映射

4)输入XYZ / 在复制的映射中将位置的映射类型更改为geo_point,然后 使用创建映射 放置XYZ {映射:...}

快乐的一天

本文链接:https://www.f2er.com/3154394.html

大家都在问