Elasticsearch GROUP BY列的HAVING COUNT> x

时间:2019-06-19 12:52:08

标签: sql elasticsearch group-by kibana having

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

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中是否有一种方法可以做到这一点,假设我添加到Elastic中的JSON具有类似的形式,例如

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

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

1 个答案:

答案 0 :(得分:0)

您可以尝试kibana的SQl转换查询

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

在查询中添加索引名称,SQL查询和列名称(弹性搜索中名称应匹配)。

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