Я пытаюсь преобразовать широту и долготу в geo_points в ElasticSearch.Проблема в том, что у меня уже есть загруженные данные значений широты и долготы в эластичном поиске, но у меня проблемы с их преобразованием.У меня такое ощущение, что есть решение, использующее безболезненно, но я не совсем точно определил его.
Вот как выглядит карта
{
"temporary_index" : {
"mappings" : {
"handy" : {
"properties" : {
"CurrentLocationObj" : {
"properties" : {
"lat" : {
"type" : "float"
},
"lon" : {
"type" : "float"
}
}
},
"current_latitude" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"current_longitude" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"location" : {
"type" : "geo_point"
},
}
}
}
}
}
И это пример документавыглядит как
"hits" : [
{
"_index" : "temporary_index",
"_type" : "handy",
"_id" : "9Q8ijmsBaU9mgS87_blD",
"_score" : 1.0,
"_source" : {
"current_longitude" : "139.7243101",
"current_latitude" : "35.6256271",
"CurrentLocationObj" : {
"lat" : 35.6256271,
"lon" : 139.7243101
}
Очевидно, что есть еще поля, но я удалил их для ясности.
Это то, что я пробовал.
POST temporary_index/_update_by_query
{
"query": {
"match_all": {}
},
"script": {
"inline": "ctx._source.location = [ctx._source.current_latitude, ctx._source.current_longitude]",
"lang": "painless"
}
}
Однако я получаю следующую ошибку:
"reason": "failed to parse field [location] of type [geo_point]",
"caused_by": {
"type": "parse_exception",
"reason": "unsupported symbol [.] in geohash [35.4428348]",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "unsupported symbol [.] in geohash [35.4428348]"
}
}
Я использовал следующий стекопоток в качестве основы для своего решения, но я явно что-то делаю не так.Любой совет полезен!Благодарю.
Обмен координат географических точек в индексе эластичного поиска