根据术语字段

时间:2018-06-15 15:10:45

标签: elasticsearch elasticsearch-aggregation

我有一个产品列表(deal个实体),我正在尝试按类别创建一个桶聚合,按available_stock的总和排序。

这一切都运行正常,但我想从未将level设置为1的结果聚合中排除这些类别(换句话说,我只想在{{1}的类别上保留聚合IS 1)。

我知道elasticsearch提供了“exclude”和“include”参数,但这些只能在我聚合的同一个字段上工作(在这种情况下为level

这是我的样本deal.category.id文件:

deal

这就是查询:

{
  "_source": {
    "id": 392745,
    "category": [
      {
        "id": 17575,
        "level": 2
      },
      {
        "id": 17574,
        "level": 1
      },
      {
        "id": 17572,
        "level": 0
      }
    ],
    "stats": {
      "available_stock": 500
    }
  }
}

我的结果聚合,遗憾地包括级别为{ "query": { "filtered": { "query": { "match_all": {} }, } }, "aggs": { "mainAggregation": { "terms": { "field": "deal.category.id", "order": { "available_stock": "desc" }, "size": 3 }, "aggs": { "available_stock": { "sum": { "field": "deal.stats.available_stock" } } } } }, "size": 0 } 的类别。

17572

P.S。:目前在ElasticSearch 1.6上

更新1:经过各种子分段组合的各种实验后仍然坚持这个问题。

1 个答案:

答案 0 :(得分:0)

我发现这不可能解决,因此决定进行两个单独的查询。