使用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”:{
“过滤”:
{
“范围”:{
“ vip_budget”:{
“ gt”:500
}
}
}
}
我尝试使用Array,但无法正常工作。
filter: [{:range=>{:budget=>{:lt=>100000}}}, {:range=>{:vip_budget=>{:gt=>500}}}]
获取此错误(使用rails gems)
Elasticsearch :: Transport :: Transport :: Errors :: BadRequest异常:[400] {“错误”:{“ root_cause”:[{“ type”:“ parsing_exception”,“ reason”:“ 预期[过滤器]下的[START_OBJECT],但在[budgets_stats]“,” line“:1,” col“:233}] 中获得了[START_ARRAY]:” type“:” parsing_exception“,”原因“: “在[过滤器]下预期[START_OBJECT],但在[budgets_stats]中获得了[START_ARRAY]”,“行”:1,“ col”:233},“状态”:400}
这甚至可能吗?在弹性/ rails宝石文档中找不到有关弹性的参考
将感谢您的帮助,
谢谢