在本章开头,我们提到过Elasticsearch可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理PB级数据。我们的教程给出了一些使用Elasticsearch的示例,但并不涉及任何内部机制。Elasticsearch天生就是分布式的,并且在设计时屏蔽了分布式的复杂性

    Elasticsearch在分布式方面几乎是透明的。教程中并不要求了解分布式系统、分片、集群发现或其他的各种分布式概念。可以使用笔记本上的单节点轻松地运行教程里的程序,但如果你想要在100个节点的集群上运行程序,一切依然顺畅

    Elasticsearch尽可能的屏蔽了分布式系统的复杂性。这里列举了一些在后台自动执行的操作:

    1. 分配文档到不同的容器或分片中,文档可以存储在一个或多个节点中
    2. 按集群节点来均衡分配这些分片,从而对索引和搜索过程进行负载均衡
    3. 复制每个分片以支持数据冗余,从而防止硬件故障导致的数据丢失
    4. 将集群中任一节点的请求路由到存有相关数据的节点
    5. 集群扩容时无缝整合新节点,重新分配分片以便从离群节点恢复

    当阅读本书时,将会遇到有关Elasticsearch分布式特性的补充章节。这些章节将介绍有关集群扩容、故障转移(集群内的原理)、应对文档存储(分布式文档存储)、执行分布式搜索(执行分布式检索),以及分区(shard)及其工作原理(分片内部原理

    这些章节并非必读,完全可以无需了解内部机制就使用ELasticsearch,但是他们将从另一个角度帮助你了解更完整的ELasticsearch知识,可以根据需要跳过他们,或者想更完整的理解时再回头阅读也无妨。