每个文档我有一个任意位置数据点(最多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坐标?
答案 0 :(得分:0)
多个location
值可以表示为location
个字段的数组。试试这个:
{
"pin": [
{
"location" :{
"lat": 40.12,
"lon": -71.34
}
},
{
"location" :{
"lat": 41.12,
"lon": -72.34
}
}
]
}