我在PG中有一个这样的查询,它很简单,可以过滤许多范围的数据类型。我在PG中有这样的查询,它非常简单,可以过滤许多范围的数据类型。
select id,
sum(1) filter (where (col1+col2+col3) > 0 and (col1+col2+col3) < 10) as 'type_1'
from tbl
where date >= '2018-11-01'
group by id
使用elasticseach替换此查询时,我被卡住了。我该如何解决这个查询?
{
"size":0,
"query":{
},
"aggs":{
"current_data":{
"aggs":{
"id":{
"terms":{
"field":"id",
"size":15
},
"aggs":{
"type_1":{
"filter" : {
"bool":{
"must" : [
{
"range":{
"col1" + "col2" + "col3":{ // are there any equivalent to do like this?
"gt":0
}
}
}
]
}
}
}
}
}
}
}
}
答案 0 :(得分:0)
您可以使用如下脚本过滤器来做到这一点:
{
"size": 0,
"aggs": {
"current_data": {
"terms": {
"field": "id",
"size": 15
},
"aggs": {
"type_1": {
"filter": {
"script": {
"script": {
"source": "def sum = doc.col1.value + doc.col2.value + doc.col3.value; return sum > 0 && sum < 10"
}
}
}
}
}
}
}
}