由唯一子字符串聚合的Elasticsearch查询(电子邮件域)

时间:2014-04-18 15:14:58

标签: elasticsearch aggregation

我有一个弹性搜索查询,可以查询索引,然后根据特定字段sender_not_analyzed进行聚合。然后,我在同一个字段sender_not_analyzed上使用一个术语聚合,它返回顶部"发送者"的桶。我的查询目前是:

{
   "size": 0,
   "query": {
      "regexp": {
         "sender_not_analyzed": ".*[@].*"
      }
   },
   "aggs": {
      "sender-stats": {
         "terms": {
            "field": "sender_not_analyzed"
         }
      }
   }
}

返回看起来像:

的存储桶
"aggregations": {
      "sender-stats": {
         "buckets": [
            {
               "key": "<Mike <mike@fizzbuzz.com>@MISSING_DOMAIN>",
               "doc_count": 5017
            },
            {
               "key": "jon.doe@foo.com",
               "doc_count": 3963
            },
            {
               "key": "jane.doe@foo.com",
               "doc_count": 2857
            },
            {
              "key": "jon.doe@bar.com",
              "doc_count":1544
            }

我如何编写汇总,以便为每个唯一的电子邮件域获取单个存储分区,例如foo.com将有doc_count(3963 + 2857)6820?我可以使用正则表达式聚合来完成此操作,还是需要编写某种自定义分析器来将@中的字符串拆分为字符串的末尾?

0 个答案:

没有答案