Elasticsearch Первичная и несовместимость осколка реплики - PullRequest
0 голосов
/ 05 сентября 2018

Проблема: Я несколько раз запрашивал эластичный поиск с одним и тем же запросом и обнаружил, что даже когда я выполняю один и тот же запрос, возвращаемые документы не согласованы. Мой запрос выглядит так:

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

и с предпочтением = _replica я получил следующие документы:

648626 1237173 655329 503380 9434601

При этом я мог видеть, что первичные осколки и осколки реплик имеют несогласованность в документах, и что документы 648626, 1237173 и 9434601 являются общими в первичном, и реплика, возвращаемая, когда я запрашивал все четыре раза.

Для двойного подтверждения я установил preference = _replica и добавил следующее в фильтр bool

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

указание документа (1453010), который вернулся, когда я указал предпочтение = _primary, но я все еще получил документ, что противоречит ранее выполненному упражнению. Я также добавил «объяснить»: правда, чтобы увидеть осколок, но он показывает только осколок и не упоминает, является ли он первичным или точным, поэтому есть вероятность, что может быть ошибка.

У меня есть два вопроса:

  1. Есть ли вероятность того, что и основной, и реплика могут быть не синхронизированы? Если так, то каким будет решение, и что это больше не повторится.

  2. Есть ли способ, с помощью которого я могу подтвердить, откуда (основной или реплика) приходит конкретный документ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...