ElasticSearch 2 (38) - 信息聚合系列之结束与思考

ElasticSearch 2 (38) - 信息聚合系列之结束与思考

摘要

版本

elasticsearch版本: elasticsearch-2.x

内容

本小节涵盖了许多基本理论以及很多深入的技术问题。聚合给 Elasticsearch 带来了难以言喻的强大能力和灵活性。桶与度量的嵌套能力,基数与百分位数的快速估算能力,定位信息中统计异常的能力,所有的这些都在近乎实时的情况下操作的,而且全文搜索是并行的,它们改变了很多组织和企业的游戏规则。

事情通常是一旦我们开始使用它,我们就能找到很多其他的可用场景。实时报表与分析对于很多组织来说都是核心功能(它远不止商业智能或服务器日志那么简单)。

能力越大责任也越大,对于 Elasticsearch 就是意味着内存适当的管理。在 Elasticsearch 中 内存通常是个限制因素,特别是那些高度使用聚合的节点。因为聚合数据都被加载到 fielddata 中,这是一个内存数据结构,所以对内存使用的高效管理至关重要。

内存的管理形式可以有多种形式,这取决于我们特定的应用场景:

  • 在数据层,确保合理的 analyze(或 not_analyze)分析数据从而友好的利用内存。
  • 在索引时,对于内容很多的字段使用磁盘存储文档而不是内存里的 fielddata。
  • 在搜索时,合理利用近似聚合和数据过滤。
  • 在节点层,设置硬内存大小以及动态的断熔限制。
  • 在操作层,监控内存使用情况并控制缓慢的内存回收周期,可以给集群增加更多节点。

大多数实施会应用到以上一种或几种方法。确切的组合方式与我们特定的系统环境高度相关。有些组织需要强劲的响应能力所以只是简单地选择增加更多节点。有的组织受限于预算,会选择使用文档值和近似聚合。

无论采取何种方式,对于现有的选择进行评估十分重要,并同时创建短期和长期计划。先决定当前内存的使用情况和需要做的事情(如果有),再决定未来六个月到一年数据会如何增长,使用何种方式来扩展?

最好在建立集群之前就计划好这些内容,而不是在我们集群堆内存使用 90% 的时候再临时抱佛脚。

参考

elastic.co:
Closing Thoughts

posted @ 2016-03-28 15:34  Richaaaard  阅读(515)  评论(0编辑  收藏  举报