你能帮我把这个sql查询转换为弹性搜索查询吗?
SELECT group,MAX(date) as max_date
FROM table
WHERE checks>0
GROUP BY group
答案 0 :(得分:1)
假设您正在执行HTTP POST
,如果您的查询如下所示,该怎么办?您可以简单地使用ES的max聚合来获取 max 值,并在 aggs 中使用 terms 以获取GROUP BY
功能已完成。
请求:
yourhost:9200 / your_index / _search
请求正文:
{
"query": {
"query_string": {
"query": "checks > 0" <-- check whether this works, if not use the range query
}
},
"aggs": {
"groupby_group": {
"terms": {
"field": "group"
},
"aggs": {
"maximum": {
"max": {
"script": "doc['date'].value"
}
}
}
}
}
}
对于checks > 0
,您可以使用range查询以及查询,这可能如下所示:
"range" : {
"checks" : {
"gte" : 0
}
}
This可以帮助您执行聚合。但在尝试查询之前,请确保您已从 elasticsearch.yml 启用脚本:
script.inline: on
希望这有帮助!