如何使用elasticsearch_dsl进行地理汇总?

时间:2018-10-30 06:13:13

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

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

1 个答案:

答案 0 :(得分:0)

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

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的strong> 范围 ,例如search gas stations which are near 100 miles around a house you have Amsterdam

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

请通过以下链接,以便您为正确的用例创建汇总,或者至少使您重新考虑当前的用例。

Geo Distance AggregationGeo Hash-grid Aggregation

希望有帮助!