【问题标题】:Count the number of documents that have unique *values* in elasticsearch计算在 elasticsearch 中具有唯一 *values* 的文档数
【发布时间】:2014-10-24 07:56:05
【问题描述】:

假设我的索引包含以下形式的文档:

{
   "_id": "IDIDIDIDID"
   "IP": "xxx.xxx.xxx.xxx",
   "NetworkID": "foobar"
}

我想计算(IP, NetworkID) 的唯一组合数。我知道如何(大约)为单个字段执行此操作:cardinality aggregation。我不知道如何为多个领域做到这一点。有没有办法直接使用elasticsearch或者是唯一的方法是离线处理?

【问题讨论】:

  • 我认为您要么错误地描述了要求,要么混淆了事情。基数用于计算唯一值。但是在您的帖子中,您说的是“计算哪对(IP,NetworkID)相同的文档”,这与计算(IP,NetworkID)的唯一组合不同。你说你想要一些具有相同 IP 和 NetworkID 的文档。
  • @AndreiStefan:谢谢!编辑了帖子。
  • 你试过我下面的建议了吗?它对你有用吗?

标签: elasticsearch


【解决方案1】:

为您提到的相同基数聚合使用脚本:

{
  "aggs": {
    "counts": {
      "cardinality": {
        "script": "doc['IP'].value + ' ' + doc['NetworkID'].value"
      }
    }
  }
}

【讨论】:

  • 它似乎在起作用。能不能简单介绍一下剧本?它是否返回string?它是如何工作的?
  • 唯一性由字符串组合 IP + NetworkID 给出,并在此组合上进行聚合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2020-11-13
相关资源
最近更新 更多