我为搜索设计了solr/elasticsearch,我有一个特别的问题。假设我有10K的搜索请求/秒。那么我在哪里搜索碎片或复制品。我知道复制品是碎片的备份。
如果它发生在碎片上,那么如何/为什么以及如果它发生在副本上,那么如何/为什么?
发布于 2020-01-26 07:18:08
主碎片是数据的原始副本,而副本碎片是原始数据的副本。
虽然索引总是发生在原始副本(即主碎片)上,然后复制到副本碎片,但是搜索可以发生在任何副本上,而不管原始数据还是数据副本。
因此,副本不仅是为容错而创建的,如果您丢失了一个副本,它可以从它的副本()中恢复,还可以提高搜索性能,如果一个碎片被重载(主副本或副本),那么在加载最少的副本(即另一个副本.)上进行搜索。
关于副本如何/为什么会提高搜索延迟,请参考ES中的自适应复制选择。
如果你需要更多的信息,请随时通知我。
基于OP注释的编辑:
从ES 7中,自适应副本选择默认为on,因此它将发送到负载最少的副本,但即使所有碎片仍未得到充分利用,也不会将所有搜索请求发送到主碎片以避免重载。在ARS(自适应副本选择)之前,ES还会以循环方式发送这些搜索请求,以避免一个碎片超载。
https://stackoverflow.com/questions/59916305
复制相似问题