Giả sử chúng tôi có một loạt tài liệu trong chỉ mục ElasticSearch. Mỗi tài liệu có nhiều địa điểm trong một mảng, như thế này:Bộ lọc khoảng cách địa lý của ElasticSearch với nhiều vị trí trong mảng - có thể?
{
"name": "foobar",
"locations": [
{
"lat": 40.708519,
"lon": -74.003212
},
{
"lat": 39.752609,
"lon": -104.998100
},
{
"lat": 51.506321,
"lon": -0.127140
}
]
}
Theo ElasticSearch reference guide
bộ lọc
geo_distance
thể làm việc với nhiều địa điểm/chỉ mỗi tài liệu. Khi một vị trí/điểm duy nhất phù hợp với bộ lọc, tài liệu sẽ được bao gồm trong bộ lọc.
Vì vậy, có thể tạo bộ lọc khoảng cách địa lý để kiểm tra tất cả các vị trí trong mảng không?
này dường như không làm việc, không may:
{
"filter": {
"geo_distance": {
"distance": "100 km",
"locations": "40, -105"
}
}
}
ném "QueryParsingException[[myIndex] failed to find geo_point field [locations]
" vì locations
không phải là một đơn geo_point
nhưng một mảng của geo_point
s.
Vâng, có bản đồ geo_point cho các địa điểm. – Max
Sau đó, nó sẽ làm việc, xem ví dụ của tôi. Bạn sử dụng phiên bản ES nào? Tôi đã thử nghiệm nó trên 0,20,6. – Thorsten
Thực ra, nó * hiện * hoạt động ngay sau khi nuking chỉ mục gốc. Chỉ định một ánh xạ geo_point và sau đó chỉ cần chèn một mảng các vị trí đã làm các trick, lập bản đồ trước của tôi là quá phức tạp. Cảm ơn rất nhiều! – Max