Elasticsearch在聚合中获得每个特定学期的前2个结果

发布于 2025-02-07 04:55:43 字数 742 浏览 0 评论 0原文

鉴于此查询,我想检索并仅限制到每个国家的前两个城市。 因此,鉴于最受欢迎的国家,检索了前2个城市,然后是下一个国家,前2个城市和Etcera。

{
  "size": 0,
  "aggs": {
    "user_city_id": {
      "terms": {
        "field": "user.city_id",
        "size": 999
      },
      "aggs": {
        "user_country_id": {
          "terms": {
            "field": "user.country_id",
            "size": 1
          },
          "aggs": {
            "user_name": {
              "terms": {
                "field": "user.name",
                "size": 1
              }
            }
          }
        }
      }
    }
  },
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "user.category": 1
          }
        }
      ]
    }
  }
}

Given this query, i want to retrieve and limit only to top 2 cities from each country.
So, given the most popular country, retrieve top 2 cities, then next country, top 2 cities and etcera.

{
  "size": 0,
  "aggs": {
    "user_city_id": {
      "terms": {
        "field": "user.city_id",
        "size": 999
      },
      "aggs": {
        "user_country_id": {
          "terms": {
            "field": "user.country_id",
            "size": 1
          },
          "aggs": {
            "user_name": {
              "terms": {
                "field": "user.name",
                "size": 1
              }
            }
          }
        }
      }
    }
  },
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "user.category": 1
          }
        }
      ]
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风疏影 2025-02-14 04:55:43

下面的汇总查询为每个国家提供2个城市。

{
  "aggs": {
    "user_country_id": {
      "terms": {
        "field": "user.country_id",
        "size": 10
      },
      "aggs": {
        "user_city_id": {
          "terms": {
            "field": "user.city_id",
            "size": 2
          }
        }
      }
    }
  }
}

Below aggregation query give you 2 city per country.

{
  "aggs": {
    "user_country_id": {
      "terms": {
        "field": "user.country_id",
        "size": 10
      },
      "aggs": {
        "user_city_id": {
          "terms": {
            "field": "user.city_id",
            "size": 2
          }
        }
      }
    }
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文