Может кто-нибудь подсказать мне, чтобы изменить тип отображения местоположения на geo_point .?
Служба: Aws ElasticSearch (версия 6.2) База данных: DynamodB
Я используюСервис упругого поиска aws для фильтрации значений на основе моего местоположения. Согласно документации, я создал триггерную лямбда-функцию dbtoEs, которая представляет собой код Python вскоре после добавления записи в ее индекс.
Так как мой тип местоположения в DynamodB - это тип Location {lat: Float lon: Float}
Когда я иду в Aws ElasticSearch и проверяю в индексах, типом отображения для этого поля также является location {latfloat lon float}
Согласно запросу Elastic geo distance (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**