Предположим, у меня большой индекс, он состоит из 500 миллионов документов, и по умолчанию ES создает 5 основных сегментов по причинам, указанным ниже, и я также использую ту же настройку.
Производительность : - будет меньше времени для поиска в сегменте с меньшим количеством документов (100 миллионов в моем случае использования), чем в одном фрагменте с огромным количеством документов (500 миллионов).Кроме того, позволяет распределять и распараллеливать операции по осколкам.
Горизонтальная масштабируемость (HS) : - горизонтальное разделение / масштабирование объема содержимого.
Но когда мы ищем по умолчанию, он просто переходит на 1 шард и дает результат.в этом случае релевантность не точна (так как на idf будет оказано существенное влияние), а также может даже не дать никакого результата, если мой соответствующий документ находится в другом фрагменте.и он называется Эффект Sharding .
Выше подробно объясняется здесь , и есть ниже 2 варианта, чтобы избежать этой проблемы, но я думаю, что оба решения имеютнекоторые минусы: -
1.Маршрутизация документов: В этом случае все документы будут находиться на одних и тех же осколках, которые теряют всю цель осколков.
2.dfs_query_then_fetch тип поиска: с ним связаны затраты производительности.
Мне интересно узнать ниже:
- Что ES делает по умолчанию?или есть какой-нибудь конфиг, которым можно управлять?
- Есть ли другое готовое решение, которое ES предлагает, чтобы избежать эффекта шардинга ?