【问题标题】:elasticsearch query of group by分组的弹性搜索查询
【发布时间】:2017-07-28 18:17:16
【问题描述】:

我想要一个结果,即在 group by & sort 之后从每个组中获取前 N 个数据。我需要一份清单。

类似mysql查询:

SELECT a.person, a.group, a.age FROM person AS a WHERE
(SELECT COUNT(*) FROM person AS b 
WHERE b.group = a.group AND b.age >= a.age) <= 2 
ORDER BY a.group ASC, a.age DESC

任何人都可以帮助我吗?多谢。

【问题讨论】:

  • 您可以添加要运行的映射和查询吗?

标签: elasticsearch


【解决方案1】:

尝试嵌套聚合,在聚合中您也可以排序。 看看这个:-Sorting after aggregation in Elasticsearch

【讨论】:

  • 把 size 设为 n 然后排序 .. 你会得到 top n :)
  • 嗨 Nikunj,我试试你的方法。但这不是我想要的。你能再帮帮我吗?我的 DSL 是: {"size": 2,"aggs": { "a1": {"terms": {"field": "usertype","size": 4}}},"sort": {"recomend ": {"order": "desc"}}} 你可以格式化我的 DSL,谢谢。但我只从 es 得到 2 个结果。我想从每组中获取 2 个数据,总共必须 8 个。你能帮我吗?对我来说很棒的是给我一个 DSL 查询。谢谢
  • 你能给我一些ES的样本数据和你想要的样本输出吗?如果您在这里不舒服,可以给我发消息或发送电子邮件至 nikunjaggarwal08@gmail.com。我一定会给你发 DSL。
  • 好的,我给你发了一封邮件。请检查您的邮箱。非常感谢
  • 嗨,@Nikunj Aggarwal。你还记得我的问题吗?请给我发邮件。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多