【问题标题】:How to geo_distance filter against multiple location fields in Elasticsearch如何在 Elasticsearch 中针对多个位置字段进行 geo_distance 过滤
【发布时间】:2012-10-03 19:30:08
【问题描述】:

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

【问题讨论】:

    标签: search search-engine elasticsearch django-haystack


    【解决方案1】:

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

    {
        "pin": [
            {
                "location" :{
                    "lat": 40.12,
                    "lon": -71.34
                }
            },
            {
                "location" :{
                    "lat": 41.12,
                    "lon": -72.34
                }
            }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-14
      • 2011-12-25
      • 2017-03-31
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 2015-07-12
      • 2016-07-20
      相关资源
      最近更新 更多