每个文档我有任意数量的位置数据点(最多 80 个)。我想对这些位置执行 geo_distance 过滤器。elasticsearch 文档声称:
The geo_distance filter can work with multiple locations / points per document.
Once a single location / point matches the filter, the document will be included in the filter.
从未明确说明如何实现这一目标。我假设您必须提前定义位置的数量,以便您的索引文档看起来包含这些嵌套字段:
{
"pin" : {
"location" : {
"lat" : 40.12,
"lon" : -71.34
}
}
}
{
"alt_pin" : {
"location" : {
"lat" : 41.12,
"lon" : -72.34
}
}
}
我假设你会以某种方式过滤 pin.location 和 alt_pin.location 。
如果我有任意数量的位置(pin1、pin2、pin3、...)怎么办?我可以做这样的事情:
"pin" : {
"locations" : [{
"lat" : 41.12,
"lon" : -72.34
}, {
"lat" : 41.12,
"lon" : -72.34
}]
}
}
会有一些变化吗?也许使用 geo_hashes 而不是 lat/lng 坐标?