使用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}

这甚至可能吗?在弹性/轨道宝石的文件中找不到弹性的参考文献

将不胜感激,

谢谢