计算正则表达式聚合中的distinc字段值

时间:2016-10-18 08:27:26

标签: elasticsearch

我有以下形式的文件存储在elasticsearch中:

{ "mid" : "", "fun" : "", "user" : "", "jobid" : "", ...}

我想根据前3个字段聚合这些文档,并且通过此查询成功完成了这些:

{
  "size" : 0,
  "aggs": {
    "username": {
      "terms": {
        "field": "user"
      },
      "aggs": {
        "minion_id": {
          "terms": {
            "field": "mid"
          },
          "aggs": {
            "network": {
              "filter": {
                "regexp": {
                  "fun": "(ip|network).*"
                }
              }
            },
            "service": {
              "filter": {
                "regexp": {
                  "fun": "service.*"
                }
              }
            }
          }
        }
      }
    }
  }
}

由于我想根据某些模式对fun字段中的值进行分组,因此我在此字段中使用了正则表达式(与其精确值的其他字段不同)。

现在我的问题是:如何根据jobid字段中的不同值来计算文档数量?

以这些文件为例:

{ "mid" : "a", "fun" : "ip.a", "user" : "user1", "jobid" : "1", ...}
{ "mid" : "a", "fun" : "network.a", "user" : "user1", "jobid" : "1", ...}

正如您所看到的那样,它们被放在同一个组中,因为fun字段的模式是相同的。使用我的查询会将2作为结果,但我想返回1,因为它们的jobid字段具有相同的值。

感谢。

0 个答案:

没有答案