弹性搜索中的primary_term究竟是什么?

Ste*_*nie 6 elasticsearch amazon-elasticsearch

在阅读了大量文档后,我了解到primary_term 和sequence_number 用于乐观并发控制,以防止旧版本的文档覆盖较新的文档。但是,我的问题是 primary_term 到底是什么?它与主分片相同吗?

小智 6

来自文档

\n
\n

为了确保文档的旧版本不会覆盖新版本,对文档执行的每个操作都会由协调该更改的主分片分配一个序列号。

\n
\n

假设您的索引由 5 个主分片组成(这是版本 7 之前的默认分片)。索引和更新请求是针对主分片执行的。如果您有多个主分片,elasticsearch 能够将传入请求(例如大量批量请求)并行/分发到多个分片,以提高性能。

\n

因此,primary_term提供有关执行/协调更改/更新的主分片(本例中为#1、#2、#3、#4 或#5)的信息。

\n
\n

问:和主分片一样吗?

\n

答:如果你的意思是,它与主分片的数量相同,那么是的,如果你的索引只有一个主分片,那么这些值将相等。

\n
\n


Bry*_*yji 5

每次在故障转移期间不同的分片成为主分片时,主项都会增加。这有助于解决重新联机的旧主服务器上发生的更改与新主服务器上发生的更改(新主服务器)。

这些主要条款是增量的,并且会在提升主要条款时发生变化。它们被持久化在集群状态中,因此代表了集群所在的一种“版本”或“代”。

https://www.elastic.co/blog/elasticsearch-sequence-ids-6-0