Elasticsearch 1.0.0 发布

  • Ralph Winzinger
  • 臧秀涛

2014 年 2 月 18 日

话题:数据库DevOps大数据语言 & 开发架构AI

Elasticsearch发布了以其自身命名的开源分析工具的 1.0.0 版本。Elasticsearch 是一款分布式搜索引擎,支持在大数据环境中进行实时数据分析。它基于Apache Lucene文本搜索引擎,内部功能通过 ReST API 暴露给外部。除了通过 HTTP 直接访问 Elasticsearch,还可以通过支持 Java、JavaScript、Python 及更多语言的客户端库来访问。它也支持集成Apache Hadoop环境。Elasticsearch 在有些处理海量数据的公司中已经有所应用,如 GitHub、Foursquare 和 SoundCloud 等。

Elasticsearch 的基本特性主要围绕可伸缩性、高可用性和实时分析。进入搜索引擎的数据会立即建立索引,在集群中复制,并为分析做好准备。

  • 可伸缩性:Elasticsearch 是为在集群环境中工作而设计的。一个节点一启动,就会自动寻找网络中的其他节点并连接过去。索引以分片方式组织,分布在集群中。因此搜索索引是分布式操作,会在所有集群节点上并行运行。如果需要更好的性能,只需要将额外的节点加入集群,分片会自动识别。
  • 可用性:数据库分片不仅用于水平伸缩,也有可用性考虑。对于每个分片,都有一个保存在不同的集群节点上的复制分片,所以如果一个节点当掉,并不会丢失数据。Elasticsearch 会探测到故障节点,将其集群中移除。在故障节点移除之后,考虑到伸缩性和弹性,分片会重组,以便优化。

    为支持整个集群重启,Elasticsearch 所需要的所有元数据能够持久化到各种存储类型上。数据可以借助所谓的网关来存储,网关目前支持本地存储和共享的文件系统。

  • 实时:Elasticsearch 是无模式的,而且支持索引任意的 JSON 文档。它会分析文档的结构,甚至还能自动探测某些数据类型,如时间戳。默认情况下,文档中的所有字段都会被索引,而且是可以搜索的。除了简单的全文搜索之外,分面(facets,提供聚合的分析函数,如日期范围、距离、柱状图等)和度量指标(metrics,如求和、平均和统计等)可以直接应用于索引。

Elasticsearch 1.0.0 的新特性

1.0.0 版本对 API 进行了很多修改,并带来了很多功能增强,使 Elasticsearch 用起来更为直观和高效了。功能增强包括备份和恢复索引、分析数据并使 Elasticsearch 更有弹性的新方法:

  • 快照/恢复:新版本提供了一个简单的 API,用来生成整个集群的快照,以创建备份。Elasticsearch 集群的状态——包括元数据和索引——可以保存在快照仓库中。仓库通常放在共享的文件系统中,而且可以保存任意数量的快照。如果发生了内置的容错和弹性机制无法处理的问题,集群可以根据仓库中的任何快照重建。
  • 聚集(Aggregation):相对于之前版本中已有的分面,聚集为分析现有数据提供了更强大的功能。分面仅为分析功能提供了少量结果(比如,特定距离内的商店数),聚集则会保存某次查询实际找到的文档,并支持将生成的文档集作为新查询的输入(比如,特定距离内所有商店的季度平均销售额)。
  • 断路开关(Circuit Breaker):系统将添加断路开关,以阻止操作或运行时错误对搜索索引造成严重的不利影响。Elasticsearch 1.0.0 添加的第一重保护是监控空余内存,并评估搜索或分析操作所需要的内存量。如果某个操作需要的内存超出了可用内存,就阻塞该操作,这样就不会导致 OutOfMemory 异常了。未来的版本中将实现更多断路开关。

Elasticsearch 使用修改主版本号的方式来整理现有的 API,它也接受不向后兼容的修改。在升级到 1.0.0 版本之前,用户应该备份所有数据,并阅读所有破坏性修改的列表。

Elasticsearch 还提供了用于处理数据获取和分析的额外工具。连同LogstashKibana,Elasticsearch 还创建了ELK-stack来分析日志文件和其他与时间相关的信息源,并以不同的方式对这些数据进行分析和可视化。

也可以通过 Elasticsearch 的商业分支购买专业支持。

查看英文原文:Elasticsearch 1.0.0 released

数据库DevOps大数据语言 & 开发架构AI