基于条件地理位置的聚合文档搜索

时间:2017-09-10 11:28:39

标签: elasticsearch search nosql

我的文档架构如下所示:

{
  "store_id": 123,
  "franchise_id": 1,
  "name": "test",
  "location": "1.2,1.3"
}

我的用例围绕寻找商店。商店可以是特许经营的一部分,也可以是独立的(franchise_id = store_id)。因此,作为特许经营的一部分,可以有多个不同的商店,我使用 franchise_id 字段来识别商店属于特许经营权。

在搜索商店及其名称和用户位置时,我想根据特许经营权ID重复删除结果。

现在给定一个位置,它的距离范围和商店名称作为输入我想找到按franchise_id分组的商店,这样我就得到了

  1. 位于范围内的文档
  2. 如果franchise_id

    在此范围内没有商店,则为OR
    1. 与指定位置保持最小距离的商店文档
    2. 我已经尝试过关于聚合的阅读,但我无法弄清楚这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用franchise_id聚合并在terms聚合内,按top hits对商店进行分组/重复数据删除。见https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html