2016-02-22 2 views
1

У меня такой сценарий, когда система каждый день создает индекс внутри узла. Каждый индекс имеет 1 первичный осколок.ElasticSearch - Настройка чтения только индекса повышает производительность?

Итак, все документы, индексированные за один день, идут к определенному индексу, и после того, как день прошел, создается новый индекс.

Я сохраняю индексы последних 60 дней (это значит, что у меня всегда есть 60 осколков в узле). Я не могу закрыть старые индексы, потому что хочу, чтобы они поддерживали поиск. После 60-го дня я удаляю их.

Как я читал следующее article я заметил это об индексе буфера:

Это по умолчанию до 10%, а это означает, что 10% от общего объема памяти, выделенной на узел будет использоваться в качестве буфера индексации размер. Эта сумма затем делится между всеми различными осколками

Это означает, что для индекса дня у меня есть 10%/60 индексной памяти буфера. Поэтому я не использую 10%.

Вопрос заключается в том, что произойдет, если я set to read only the older indices:

index.blocks.read_only значение ИСТИНА, чтобы индекс и индекс метаданных только для чтения, ложь, чтобы позволить операции записи и изменения метаданных.

Я увижу выгоду для этого? Как и весь 10% индексного буфера в моем единственном записываемом индексе? Или улучшить поиск других индексов, поскольку они могут быть объединены только в сегменте, поскольку они больше не получают записи?

Спасибо!

Пабло

PD: Im используя ElasticSearch 1.7.3, но Im с нетерпением жду перейти на 2.2 в будущем. Я хотел бы знать, если это возможно, если у меня есть преимущество, если это будет переведено на 2.2

ответ

1

Нет, вам не пригодится добавление блока read_only. Единственный способ освободить буфер - полностью закрыть индекс.

Кроме того, вам может быть интересно узнать о https://github.com/elastic/elasticsearch/pull/14121, который дает «активно индексирование» осколков большей доли буфера. Приходится в Elasticsearch 5.0.

Смежные вопросы