我如何在 elasticsearch 中编写这个复杂的查询
How can I write this complex query in elasticsearch
如何获得用 elasticsearch 编写的以下复杂查询
select username, count(id),
concat(YEAR(postedtime),'-',MONTH(postedtime),'-',DAY(postedtime),' ',HOUR(postedtime))
from table
where username in ("user1", "user2", "user3")
group by username,
concat(YEAR(postedtime),'-',MONTH(postedtime),'-',DAY(postedtime),' ',HOUR(postedtime));
下面是一个可以帮助您入门的查询 - 一些注意事项:
- 自动返回计数,无需明确说明
要求。
"size":0
阻止返回文档 -
你只会看到聚合。
- 返回的日期将在纪元
格式。
- 您可以将
query_string
替换为 terms
查询或
甚至使用过滤器代替 - 这将取决于您的要求。
- 有 2 个聚合级别,第一个是用户名,第二个是日期桶。
代码:
curl -XGET 'http://localhost:9200/myindex/table/_search?pretty' -d '{
"size": 0,
"query":{
"query_string": { "query":"user1 OR user2 OR user3", "fields": ["username"]}
},
"aggs" : {
"username_agg" : {
"terms": {"field" : "username"},
"aggs" : {
"date_agg": {
"date_histogram" : { "field" : "postedtime", "interval" : "hour" }
}
}
}
}
}'
如何获得用 elasticsearch 编写的以下复杂查询
select username, count(id),
concat(YEAR(postedtime),'-',MONTH(postedtime),'-',DAY(postedtime),' ',HOUR(postedtime))
from table
where username in ("user1", "user2", "user3")
group by username,
concat(YEAR(postedtime),'-',MONTH(postedtime),'-',DAY(postedtime),' ',HOUR(postedtime));
下面是一个可以帮助您入门的查询 - 一些注意事项:
- 自动返回计数,无需明确说明 要求。
"size":0
阻止返回文档 - 你只会看到聚合。- 返回的日期将在纪元 格式。
- 您可以将
query_string
替换为terms
查询或 甚至使用过滤器代替 - 这将取决于您的要求。 - 有 2 个聚合级别,第一个是用户名,第二个是日期桶。
代码:
curl -XGET 'http://localhost:9200/myindex/table/_search?pretty' -d '{
"size": 0,
"query":{
"query_string": { "query":"user1 OR user2 OR user3", "fields": ["username"]}
},
"aggs" : {
"username_agg" : {
"terms": {"field" : "username"},
"aggs" : {
"date_agg": {
"date_histogram" : { "field" : "postedtime", "interval" : "hour" }
}
}
}
}
}'