1.3 专有名词解释

Elasticsearch提供了很多专有名词,在学习Elasticsearch的原理和使用方法以前,有必要先弄懂这些专有名词。

(1)集群(cluster):如果多个安装了Elasticsearch的服务器拥有同样的集群名称,则它们处于同一个集群中,对外提供统一的服务。在一个集群中,有且只有一个主节点,当主节点宕机时需要重新“选举”出新的主节点来维持集群正常运转。

(2)节点(node):一个节点就是一台安装了Elasticsearch的服务器,它是组成集群的基本单元。

(3)索引(index):索引是存储数据的基本单元,在大多数情况下,可以把它理解为关系数据库中的表。

(4)文档(document):文档是写入索引的基本单元,一个文档就是索引中的一条数据。写入索引的文档是JSON格式的文本字符串,里面包含各个字段的信息,保存在索引的_source元数据中。

(5)分片(shard):分片分为主分片和副本分片,每个索引拥有至少一个主分片和零个或多个副本分片,一个分片本质上是一个Lucene索引。当整个集群的节点数量增加或减少时,为了让分片在每个节点上分布得比较均匀,通常会使分片在集群中移动,这个过程也就是分片的分配。在任何时候,索引的主分片和它对应的副本分片不能位于同一个节点上,这是为了保证节点宕机时,主分片和副本分片不会同时丢失。

(6)主分片(primary shard):当文档数据写入索引时,会首先选择一个主分片进行写入,再把数据同步到副本分片。主分片的数目在建立索引时就已经固定,无法修改。如果一个索引拥有的主分片越多,那么它能存储的数据越多,主分片的个数通常跟索引的数据量成正相关。

(7)副本分片(replica shard):副本分片是主分片的一个副本,它能够分担一些数据搜索的请求,从而提高搜索的吞吐量。同时,副本分片还具备容灾备份的能力,当主分片所在的节点宕机时,副本分片可以被选举为主分片来保持数据的完整性。另外,索引的副本分片数目可以随时修改。

(8)分片恢复(shard recovery):分片恢复指的是把一个分片的数据完全同步到另一个分片的过程。这个过程伴随有分片的创建和分配,在集群启动时或者节点数目改变时自发完成。只有分片恢复完全结束,副本分片才能对外提供搜索服务。

(9)索引缓冲区(index buffer):索引缓冲区用于在内存中存储最新写入索引的数据,只有在索引缓冲区写满的时候,这些新的数据才会被一次性写入磁盘。

(10)传输模块(transport module):当节点接收请求后不能处理或无法单独处理时,节点需要把请求转发给其他节点,这是同一个集群中不同节点之间互相通信的手段,这个过程由传输模块来完成。

(11)网关模块(gateway module):网关模块存储着集群的信息和每个索引分片的持久化数据。默认使用的是本地网关,它会把数据存储在本地文件系统中,你还可以配置网关模块使用HDFS或其他存储手段来持久化Elasticsearch的数据。

(12)节点发现模块(node discovery module):节点发现模块用于节点之间的互相识别,可把新节点加入集群。这个过程需要使用传输模块来完成节点之间的通信。

(13)线程池(thread pool):Elasticsearch内置了多个线程池用于处理不同的操作请求。例如,analyze线程池用于处理文本分析的请求,write线程池用于处理索引数据的写入请求,search线程池用于处理搜索请求。你可以配置线程池的大小以改变其对这些请求的处理能力。