Почему не работает dfs_query_then_fetch?

Неучитывание deleted docs при подсчете _score это не bug, а feature :wink:
При создание индекса и terms dictionarу, мы подсчитываем и сохраняем для каждого термина idf и мы не пересчитываем idf если документы удаляются. Это позволяет нам сохранять индекс в неизменном форме и также позволяет делать запросы очень быстрыми.
idf пересчитывается когда мы создаем новый индекс-сегмент, что происходит при merging.

А PIT надо еще тестировать на производительность - всегда найдется тот кто сделает 837 snapshot-а и будет жалосться на производительнолсть ФС.

Eсли индекс не меняется, opening еще один PIT - это очень дешевая операция

Я сейчас читаю, документацию на которую Игорь дал ссылку - она многое объясняет.
Согласитесь, всё же мысль не лишена логики, что при одном и том же запросе в неизмененный индекс _score ожидаешь тот же, в общем с этим ладно.

Я понимаю, что при асинхронной репликации есть какой то лаг накатывания, но тут то поток данных ни о чём. Тот индекс, что брали для примера сутки назад документов меньше 10000. Вот сегодня.

{
  "indices": {
    "help3": {
      "shards": {
        "0": [
          {
            "docs": {
              "count": 3136,
              "deleted": 1354
            }
          },
          {
            "docs": {
              "count": 3136,
              "deleted": 1343
            }
          }
        ],
        "1": [
          {
            "docs": {
              "count": 3226,
              "deleted": 219
            }
          },
          {
            "docs": {
              "count": 3226,
              "deleted": 219
            }
          }
        ]
      }
    }
  }
}

Почему шарды не засинкались за сутки, а только разошлись?

1 Like

Игорь, Майя! (@Igor_Motov , @mayya ) я правильно понимаю, что репликация идет на уровне ElasticSearch, а на уровне Lucene каждый шард сам по себе?

Да, репликация осуществляется Elasticsearch на уровне документа. Каждая шарда - это независимый индекс Lucene. Единственная гарантия тут - это то что все шарды содержат одинаковый набор не удаленных документов. Чистка удаленных документов и слияние сегментов происходит независимо на уровне Lucene.

1 Like

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.