0

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

4

1 回答 1

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;"
         }
      }
   }
}

尽管我有上述查询,但我建议您重新考虑您的要求是什么,因为地理点聚合通常只有在您使用来自特定for 的范围进行聚合时才有意义。geo_pointsearch gas stations which are near 100 miles around a house you have Amsterdam

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

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

地理距离聚合地理哈希网格聚合

希望能帮助到你!

于 2018-10-30T08:37:48.707 回答