如何获得用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
查询,或者甚至改为使用过滤器-这取决于您的要求。
编码:
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" }
}
}
}
}
}'