【问题标题】:How to aggregate by geo using elasticsearch_dsl?如何使用 elasticsearch_dsl 按地理聚合?
【发布时间】:2018-10-30 06:13:12
【问题描述】:

如果我将客户位置存储为 geo_point 数据类型(纬度/经度),并且我需要确定按 geo_point 位置分组的 doc_count,那么 elasticsearch_dsl 语法是什么?

【问题讨论】:

    标签: python-3.x elasticsearch elasticsearch-dsl elasticsearch-dsl-py


    【解决方案1】:

    以下查询将为您提供所需的内容:

    POST <your_index_name>/_search
    {  
       "size":0,
       "aggs":{  
          "myaggs":{  
             "terms":{  
                "script":"def x = String.valueOf(doc['location'].lat).concat(',')+ String.valueOf(doc['location'].lon); return x;"
             }
          }
       }
    }
    

    虽然我有上述查询,但我建议您重新考虑您的要求,因为地理点聚合通常在您使用聚合时才有意义范围来自特定的geo_point,例如search gas stations which are near 100 miles around a house you have Amsterdam.

    然后,您可以使用专门为处理 geo_point 数据类型而构建的聚合。我个人觉得我提供的查询虽然可以正常工作,但没有任何意义,或者我怀疑它是否有任何帮助(尽管我希望它有帮助,但事实证明我错了)。

    请浏览以下链接,以便为正确的用例创建聚合,或者至少让您重新考虑当前的用例。

    Geo Distance AggregationGeo Hash-grid Aggregation

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      相关资源
      最近更新 更多