【问题标题】:Elasticsearch GROUP BY column HAVING COUNT > xElasticsearch GROUP BY 列 HAVING COUNT > x
【发布时间】:2019-06-19 12:52:08
【问题描述】:

如果我有一个示例表 my_site_visits 在 SQL 中显示我网站的用户访问过哪些页面:

user_id,url
1,index.html
1,index.html
1,foobar.html
1,index.js
2,a.html
2,b.html
2,index.html
3,foo.js
3,foo.js
4,bar.js

然后我可以找到访问过多个唯一页面的用户,例如

SELECT user_id, COUNT(*) unique_pages_visited
FROM (
    SELECT DISTINCT user_id, url
    FROM my_site_visits
)
GROUP BY user_id
HAVING unique_pages_visited > 1

结果:

user_id,unique_pages_visited
1,3
2,3

假设我添加到 Elastic 的 JSON 格式相似,是否有在 Elastic 中执行此操作的方法,例如

{
    "user_id": n,
    "url": string,
    [Various other Elastic headers]
}

还可以在 Kibana 中本地执行此操作,还是我需要编写脚本来生成 Elastic 查询?

【问题讨论】:

  • 你可以在elasticsearch中尝试聚合

标签: sql elasticsearch group-by kibana having


【解决方案1】:

你可以试试kibana的SQl翻译查询

例如
POST _xpack/sql/translate
{
"query": "SELECT * FROM IndexName WHERE id=1 ",
“fetch_size”:10
}

将您的查询与您的索引名称与您的 SQL 查询和列名称一起放入(名称应与弹性搜索中的名称匹配)。

如果它解决了您的问题,请标记答案。谢谢

【讨论】:

  • 翻译会产生相当冗长和高级的查询,所以真正的 ES 查询会更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2020-09-23
相关资源
最近更新 更多