如何获取弹性搜索中除一个术语之外的所有术语的数量?

时间:2014-08-20 13:42:45

标签: elasticsearch aggregate

我有一个名字字段,想要将所有名字统计在一起,不包括一个名字。

我使用聚合来获取具有给定名称(此处为Xman)的所有文章的计数:

{
  "query": {
    "wildcard": {
      "_all": "*"
    }
  },
  "aggs": {
    "lawyerNameXmanCount": {
      "terms": {
        "field": "lawyerName",
        "include": "Xman"
      }
    }
  }
}

我只是需要否定上述查询,但现在这并不容易。

我的目标是将所有其他名字汇总在一起。

我尝试使用过滤器聚合等不同的东西,没有 - 必须过滤但没达到我的目标。

1 个答案:

答案 0 :(得分:0)

来自elasticsearch guide的文字。

  

可以过滤将为其创建存储桶的值。   这可以使用include和exclude参数来完成   基于正则表达式。

这是json,

{
    "aggs" : {
        "tags" : {
            "terms" : {
                "field" : "tags",
                "include" : ".*sport.*",
                "exclude" : "water_.*"
            }
        }
    }
}

并且,如果你想计算除了一个以外的所有数据,那么你可以使用不过滤和心形聚合(它给你估计总和),但这只是直接的方式(添加个别计数)来获得实际总和。

希望这有帮助!! ,谢谢,