【问题标题】:How can I get accurate results from ElasticSearch and Kibana?如何从 ElasticSearch 和 Kibana 获得准确的结果?
【发布时间】:2021-06-21 09:46:44
【问题描述】:

我在使用 ElasticSearch / Kibana 进行绘图时有一个问题需要解决。为了争论,我有一个旋转门,我需要 100% 准确地计算通过旋转门的唯一人数。如果 Fred 和 Joe 通过,则计数为 2 - 但如果 Fred 和 Joe 和 Joe 通过(因为 Joe 离开并再次进入),则计数仍然为 2。我处理的是文件而不是人,而不是名称,我使用的是 UUID,但原理是一样的。

我们尝试过使用基数聚合 (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html),但这不起作用。即使进行了调整,它也只能达到 100% 的准确度,并且随着数据点数量的增加,获得 100% 准确结果的可能性也会降低。我正在查看的数据点数量有数千万甚至数亿。

我知道有一个性能/准确性权衡 - 我可以忍受缓慢,但我不能忍受不准确。

获得 100% 准确计数的唯一名称的正确功能或正确方法是什么?

【问题讨论】:

    标签: elasticsearch kibana


    【解决方案1】:

    doing a complete terms aggregation and then running a scripted_metric on that 有一个解决方法,但这真的很贵。

    {
    "byFullListScripting": {
      "terms": {
        "field": "groupId",
        "shard_size": Integer.MAX_VALUE,
        "size": Integer.MAX_VALUE
      },
      "aggs": {
        "cntScripting": {
          "scripted_metric": {
            "map_script": "targetId='u'+doc['cntTargetId']; if (_agg[targetId] == null) { _agg[targetId] = 1}",
            "reduce_script": "map=[:]; for (a in _aggs){ map.putAll(a) }; return map.size()"
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2014-05-12
      • 2019-07-13
      相关资源
      最近更新 更多