Elasticsearch主和副本分片不一致

时间:2018-09-05 12:17:56

标签: elasticsearch

问题: 我使用相同的查询多次查询elasticsearch,发现即使我运行相同的查询,返回的文档也不一致。我的查询如下:

GET idx/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
              },
              {
              }
            ]
          }
        }
      ],
      "filter": [
        {
        },
        {
        }
      ]
    }
  },
  "rescore": {
    }
  }
}

我记下了运行相同查询四次的结果。

首次返回文档: 648626 629879 1237173 655329 9434601

文档第二次返回: 648626 1237173 503380 9434601 14530103

文档第三次返回: 648626 1237173 503380 9434601

文档第四次返回: 648626 629879 1237173 655329 9434601 14530103

我怀疑索引编制可能存在问题,因此添加了preference = _primary并获得了以下文档:

648626 629879 1237173 9434601 14530103

并且使用preference = _replica,我得到了以下文档:

648626 1237173 655329 503380 9434601

有了这个,我可以看到主文档和副本文档中的碎片不一致,并且当我全部四次查询时,文档648626 1237173和9434601在主文档和副本文档中很常见。

要再次确认,我设置了preference = _replica并在bool过滤器中添加了以下内容

{
 "match": {
   "id": 14530103
        }
 }

指定当我指定preference = _primary时返回的doc(1453010),但我仍然得到该文档,这与之前完成的练习相反。我进一步添加了“ explain”:true来查看该碎片,但它仅显示该碎片,并且没有提及它是主碎片还是副本碎片,因此很可能存在错误。

我有两个问题:

  1. 是否有可能使主数据库和副本数据库不同步?如果是这样,那将是解决方案,并且不会再发生这种情况。

  2. 有没有一种方法可以确认特定文档来自何处(主要或副本)?

0 个答案:

没有答案