当前位置: 首页 > 面试题库 >

ElasticSearch + Kibana-使用预先计算的哈希值进行唯一计数

姜俊友
2023-03-14
问题内容

更新 :已添加

我想对我的ElasticSearch集群执行唯一计数。该集群包含约5000万条记录。

我尝试了以下方法:

第一种方法

在本节中提到:

预计算哈希通常仅在非常大和/或高基数的字段上有用,因为它可以节省CPU和内存。

第二种方法

在本节中提到:

除非您将Elasticsearch配置为使用doc_values作为字段数据格式,否则使用聚合和构面对堆空间的要求 非常 高。

我的属性映射

"my_prop": {
  "index": "not_analyzed",
  "fielddata": {
    "format": "doc_values"
  },
  "doc_values": true,
  "type": "string",
  "fields": {
    "hash": {
      "type": "murmur3"
    }
  }
}

问题

当我在Kibana的my_prop.hash上使用唯一计数时,收到以下错误:

Data too large, data for [my_prop.hash] would be larger than limit

ElasticSearch的堆大小为2g。对于具有400万条记录的单个索引,上述操作也将失败。

我的问题

  1. 我的配置中缺少什么吗?
  2. 我应该增加我的机器吗?这似乎不是可扩展的解决方案

ElasticSearch查询

由Kibana产生:http://pastebin.com/hf1yNLhE

ElasticSearch堆栈跟踪

http://pastebin.com/BFTYUsVg


问题答案:

该错误表明您没有足够的内存(更具体地,用于的内存fielddata)来存储来自中的所有值hash,因此您需要从堆中取出它们并将它们放在磁盘上,这意味着使用doc_values

既然你已经在使用doc_valuesmy_prop,我建议做同样的my_prop.hash(而且,不,从主字段中的设置不是由子域继承)"hash": { "type": "murmur3", "index" : "no", "doc_values" : true }



 类似资料:
  • 问题内容: 我用kibana-4 我这样登录 我想绘制这样的结果的饼图(目标计数)。 这意味着每个用户只能计数一个。我能怎么做?我可以只使用Kibana的可视化选项吗?或添加一些elasticsearch输入? 问题答案: 在字段中选择聚合-> 字段 在字段中选择聚合-> 字段

  • 问题内容: 我有以下json 我想计算重复的名字 重复计数3 不可重复的名字计数 非重复计数2 我试图计算存储桶的数量,但似乎计算所有存储桶是重复的还是非重复的 问题答案: 好吧,我在这里利用了几种聚合。以下是我使用过的列表。列表的顺序是聚合的执行顺序。 对于重复 术语汇总 统计数据桶汇总 对于非重复 术语汇总 桶选择器 (作为子集合) 总和桶选择器 汇总查询: 响应 注意,在上面的响应中,我们有

  • 使用web3.utils.sha3()方法计算给定字符串的sha3哈希值。 注意,如果要模拟solidity中的sha3,请使用soliditySha3函数。 调用: web3.utils.sha3(string) web3.utils.keccak256(string) // ALIAS 参数: string - String: 要计算sha3哈希值的字符串 返回值: String: 计算结果

  • 我想向用户展示他们的客户端工具也可能生成的散列,因此我一直在比较在线散列工具。我的问题是关于它们的散列形式,因为奇怪的是,它们是不同的。 在快速搜索之后,我用5进行了测试: http://www.convertstring.com/hash/sha256 http://www.freeformatter.com/sha256-generator.html#ad-output http://onli

  • 我刚刚讨论了散列码的概念,遇到了一行:

  • 问题内容: 我有以下形式的数据: 组内的非空值始终相同。我想对每个组(如果存在)的非空值进行一次计数,然后找到每个值的总数。 我目前正在以以下方式(笨拙和低效)进行此操作: 我敢肯定,有一种方法可以更干净地执行此操作,而无需使用循环,但是我似乎无法解决问题。任何帮助将非常感激。 问题答案: 我认为您可以使用: 的另一种解决方案,然后创建new by ,将其重塑为by和last :