如何解决有什么办法可以将sql查询转换为ELASTICSEARCH QUERY(NESTED QUERY, GROUP BY, HAVING, WHERE, SUM, CASE)
您好,我是 ELasticsearch 搜索查询的新手。
我成功地将此查询转换为elasticsearch查询。
sql 查询
select
player_id,sum(amount) as Profit
from transactions
where
date between '2021-05-28 00:00:00' and '2021-05-28 23:59:59'
and currency = "EUR"
group by player_id
having sum(amount)>500;
ElasticSearch 查询
{
"aggs": {
"2": {
"terms": {
"field": "Player_ID","order": {
"1": "desc"
},"size": 5
},"aggs": {
"1": {
"sum": {
"field": "Amount"
}
},"2": {
"bucket_selector": {
"buckets_path": {
"sumAmount": "1"
},"script": "params.sumAmount > 100"
}
}
}
}
},"size": 0,"stored_fields": [
"*"
],"script_fields": {},"docvalue_fields": [
{
"field": "Date","format": "date_time"
},{
"field": "updated_at","format": "date_time"
}
],"_source": {
"excludes": []
},"query": {
"bool": {
"must": [],"filter": [
{
"bool": {
"should": [
{
"match": {
"Currency": "EUR"
}
}
],"minimum_should_match": 1
}
},{
"range": {
"Date": {
"gte": "2021-05-02T07:08:07.946Z","lte": "2021-06-01T11:40:41.797Z","format": "strict_date_optional_time"
}
}
}
],"should": [],"must_not": []
}
}
}
但我想将此查询转换为 Elasticsearch 搜索查询。
这个查询有
嵌套查询
通过...分组
拥有
在哪里
和
案例
SELECT
player_id,SUM(betAmount),SUM(winAmount),SUM(refundAmount),SUM(amount)
FROM(
select player_id,amount,CASE WHEN action = "bet" THEN amount ELSE 0 END betAmount,CASE WHEN action = "win" THEN amount ELSE 0 END winAmount,CASE WHEN action = "refund" THEN amount ELSE 0 END refundAmount
from
transactions
where
date between '2021-05-28 00:00:00' and '2021-05-28 23:59:59'
and currency = "EUR") t
GROUP BY player_id
having sum(amount)>500;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。