我试图了解如何在主分片和副本分片之间划分搜索查询。
我不清楚为什么有人说副本的好处之一是提高搜索性能。但据我所知,主分片可以像副本一样提供搜索查询。如果是这样,让我们​​假设我们有 2 个节点的 ES 集群并且查询是只读的。具有 10 个分片的索引是否可以像具有 5 个分片和 1 个副本的索引那样工作?

最佳答案

首先你需要了解什么是主分片和副本分片。
主分片是您首先写入请求然后复制到其副本分片的位置,基于复制因子 Elasticsearch 将为主分片创建 n 个副本分片。
现在,一个文档始终是单个主分片的一部分,但其副本存在于所有副本分片中。
现在,当您搜索时,您可以在其主分片(仅一个主副本)或任何一个副本分片中进行搜索。并且这些副本可以存在于集群中的不同节点上(Elasticsearch 是一个分布式系统)。 提高 Elasticsearch 可以查询的性能取决于负载和包含副本 的任何分片的各种其他因素,这解释了为什么拥有副本可以提高搜索性能以及为什么可以从副本进行搜索。

关于Elasticsearch 分片和副本搜索性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61956866/

10-16 12:29