批量加载后,Elasticsearch主和副本分片不同步

时间:2018-07-17 09:53:27

标签: elasticsearch

我的团队已经使用AWS 2上的elasticsearch进行搜索大约2年了。我们始终为主要和副本分片之间的不同步问题所困扰。在我们的Elasticsearch集群中,我们主要有2个索引,每个索引都有6个主碎片,每个碎片有2个副本(即6个主碎片,12个副本碎片,每个索引共18个)。一个索引用于搜索,因此它在映射中仅包含部分数据,但包含更多的字段数据。另一个保留了全部数据,但仅用于按ID查询。我们每个星期一定期由Elasticsearch-Consumer批量加载具有相同数据集的这两个索引。

但是当前的问题是,在使用最新数据进行批量加载之后,我们还对那些在批量加载开始之前未更新的数据进行了批量删除。我们将其运行一段时间,然后按search-index / search-type / _search?sort = publishDate查询,将会看到1个月或2个月前发布的一些文档仍在索引中。我点击了stats API _stats?level = shards,结果显示主分片和副本分片的文档数有所不同。

此外,如果我进行时间戳查询,则对于不同的尝试,elasticsearch将返回不同的结果。有时结果的总数为0,但有时结果为6或8或更多。但是,如果将首选项设置为_primary,则结果仅为0,这是理想的。相应地,如果我将偏好设置更改为_replica,我将看到结果大于0。

以上所有发现均表明,在我们的用户中,批量加载和批量删除(这两个操作之间有15分钟的间隔)之后,elasticsearch无法成功同步不同的分片。我尝试运行_flush / synced,但是它也失败了,因为与此同时我们一直在索引数据。我们不可能暂停并进行刷新。

有人对解决此问题有任何想法吗?预先感谢。

0 个答案:

没有答案