Я использую Elasticsearch V6.7.1.
Я создал несколько индексов и наполнил их данными. у каждого индекса есть поле
gps_coords
со значениями lat and
lon` (координаты)
Что я хочу сделать, это написать запрос, в котором я передаю многоугольник и проверяю, попадает ли определенная точка в этот многоугольник, это возможно?
Это запрос, который я уже пробовал:
{
"query": {
"bool" : {
"must" : {
"match_all" : {}
},
"filter": {
"geo_shape": {
"location": {
"shape": {
"type": "polygon",
"coordinates" : [
[25.0245351, 54.5693374],
[25.0245351, 54.83232],
[25.4815808, 54.83232],
[25.4815808, 54.5693374],
[25.0245351, 54.5693374]
]
},
"relation": "within"
}
}
}
}
}
}
Но он возвращает эту ошибку:
{
"error": {
"root_cause": [
{
"type": "parse_exception",
"reason": "Invalid LinearRing found. Found a single coordinate when expecting a coordinate array"
}
],
"type": "parse_exception",
"reason": "Invalid LinearRing found. Found a single coordinate when expecting a coordinate array"
},
"status": 400
}
Вот мое отображение индекса:
[
'index' => 'places',
'body' => [
'mappings' => [
'place' => [
"properties" => [
"gps_coords" => [
"ignore_malformed" => true,
"type" => "geo_shape"
]
]
],
],
"number_of_replicas" => 0
]
]
];
Может кто-нибудь, пожалуйста, укажите мне правильное направление.
Спасибо!