繁体   English   中英

ElasticSearch 基数聚合的客户端预计算哈希

[英]Client-Side Pre-Computed Hashes for ElasticSearch Cardinality Aggregation

在“ 预计算哈希”标题下的基数聚合的 ElasticSearch 文档中,我看到以下内容:

在具有高基数的字符串字段上,将字段值的 hash 存储在索引中然后在该字段上运行基数聚合可能会更快。 这可以通过从客户端提供 hash 值或让 Elasticsearch 使用 mapper-murmur3 插件为您计算 hash 值来完成。

预计算哈希通常仅在非常大和/或高基数字段上有用,因为它可以节省 CPU 和 memory。 但是,在数字字段上,散列非常快,存储原始值所需的 memory 与存储散列一样多或更少。 在低基数字符串字段上也是如此,特别是考虑到这些字段具有优化,以确保每个段的每个唯一值最多计算一次哈希。

我很好奇它说的部分,“[这可以通过从客户端提供 hash 值来完成”,因为它根本没有详细说明这一点,而是继续讨论数字字段。

如果我想在客户端上预先计算哈希值,使用xxhash之类的东西并将结果放在适当的数字字段中就足够了吗? (当然,有基数目标该字段。)或者我是否需要为 hash 值使用另一种类型的字段?

为高基数字符串字段预先计算哈希将加速基数聚合,因为不必实时计算哈希。 不过,无需在数字字段上执行此操作!

对于字符串字段,他们建议使用mapper-murmur3插件 这些散列将是字母数字,应存储在keyword字段(不是数字字段类型)中。 然后在基数聚合中使用。

在使用预先计算的哈希计算高基数字符串字段的基数时,我个人看到了 10 倍以上的改进。 值得一试!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM