步骤1)创建一个名为“NODE1”的节点

第2步)在名为“应用程序”的NODE1中创建新索引,并在索引类型中创建“测试”

第3步)创建的索引包含5个分片。没有副本

步骤4)现在我在索引中插入5个文档。它将分为5个碎片

第5步)现在,我在NODE1的集群中启动名为“NODE2”的新节点。

步骤6)据我了解,它在节点之间共享分片。所以我的2个分片移到了新节点

问题1)现在我请求位于重定位分片(从NODE1移到NODE2的分片)中的NODE1处的文档

问题2)我的搜索是否会返回我要求的文件

问题3)两个节点如何相互通信

问题4)我可以在NODE2中读写吗?如果是,我可以从NODE1中搜索由NODE2写入的相同数据。

提前致谢..!

最佳答案

所有的答案都是肯定的:)

节点通过传输端口(默认为9300端口)(或第一个空闲的(9300-9400]范围内的端口)相互通信。它们根据对象的序列化使用自定义二进制协议(protocol)进行通信(不是标准的Java序列化)多数情况下)。

集群中的任何节点都知道集群,并且知道分片在哪里等,因为它们都共享所谓的集群状态。您可以将请求(读取和写入)发送到任何节点,然后将其重新路由到感兴趣的节点,并根据请求的类型正确执行。

关于elasticsearch - 在Elasticsearch中重新分配碎片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21486394/

10-11 09:11