0

每个文档我有任意数量的位置数据点(最多 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 坐标?

4

1 回答 1

0

多个location值可以表示为location字段数组。尝试这个:

{
    "pin": [
        {
            "location" :{
                "lat": 40.12,
                "lon": -71.34
            }
        },
        {
            "location" :{
                "lat": 41.12,
                "lon": -72.34
            }
        }
    ]
}
于 2012-10-04T03:45:12.330 回答