Операция optimize
читает и записывает весь индекс, поэтому он настолько интенсивен для ввода-вывода!
Идея операций оптимизации состоит в том, чтобы повторно объединить все различные сегменты в индексе Lucene в один отдельный сегмент, что может значительно сократить время запроса, поскольку вам не нужно открывать и искать несколько файлов на запрос. Если вы используете обычную структуру файла индекса Lucene (а не комбинированную структуру), вы получаете новый сегмент для каждой операции фиксации; так же, как ваши реиндексы я предполагаю?
Я думаю, У Мэтта есть отличный совет, и я бы поддержал все, что он сказал, - руководствовался имеющимися у вас данными. Я бы на самом деле пошел еще дальше и выбрал бы а) только когда вам нужно и б) когда у вас небольшой объем запросов.
Поскольку производительность запросов тесно связана с числом сегментов в вашем индексе, простой ls -1 index/segments_* | count
может быть полезным индикатором того, когда действительно необходима оптимизация.
В качестве альтернативы, более подходящим решением может быть отслеживание производительности и объема запросов и запуск оптимизации при достижении недопустимо низкой производительности при приемлемо низком объеме.