使用ElasticSearch聚合来聚合我的文档上的数据 . 所以聚合请求看起来像这样
{
"query":{
"bool":{
"filter":[
{
"terms":{
"status":[
"active",
"deleted"
]
}
},
{
"terms":{
"address_ids":[
4078,
4080
]
}
}
]
}
},
"aggregations":{
"neighbourhoods":{
"terms":{
"field":"neighbourhoods",
"size":100
}
},
"budgets_stats":{
"filter":{
"range":{
"budget":{
"lt":100000
}
}
},
"aggregations":{
"budget":{
"stats":{
"field":"budget"
}
}
}
}
}
}
我想过滤掉**预算低于100000 **的文档,并为该特定聚合添加更多过滤器 . 我不能将它添加到查询子句,因为我有其他聚合,我不希望这些预算过滤器应用 .
我不能使用过滤器聚合,因为它为每个过滤器创建了一个不同的桶 - 而不是应用了所有过滤器的1个桶 .
如何使用多个过滤器创建过滤器聚合?让我们说其他条件应该是"budgets_stats":{
"filter":{
"range":{
"vip_budget":{
"gt":500}}}}
我尝试过使用Array,但它不起作用 .
filter: [{:range=>{:budget=>{:lt=>100000}}}, {:range=>{:vip_budget=>{:gt=>500}}}]
得到此错误(使用rails gems)
Elasticsearch ::运输::运输::错误::错误请求例外:[400] {"error":{"root_cause":[{"type":"parsing_exception","reason":” Expected [START_OBJECT] under [filter], but got a [START_ARRAY] in [budgets_stats]","line":1,"col":233}] ,"type":"parsing_exception","reason":"Expected [START_OBJECT] under [filter], but got a [START_ARRAY] in [budgets_stats]","line":1,"col":233 },"status":400}
这甚至可能吗?在弹性/轨道宝石的文件中找不到弹性的参考文献
将不胜感激,
谢谢