Повышение скорости индексирования Elasticsearch

Узнайте, как улучшить скорость индексирования Elasticsearch для повышения производительности, следуя этим 11 полезным советам.

Elasticsearch

  1. Настройте интервал обновления
    Настройте refresh_interval (по умолчанию 1 сек) в соответствии с требованиями вашей системы.
  2. Отключение реплик
    Вы можете следовать этому официальному руководству для отключения реплик и настроить их в соответствии с вашими требованиями.
  3. Автоматическое поле ID
    Не устанавливайте поле "_id" для документа. Если в этом нет необходимости, лучше позволить Elasticsearch установить "_id" автоматически.
  4. Использовать несколько рабочих/потоков
    Используйте несколько рабочих / потоков для индексации.
  5. Использовать официальные клиенты
    Используйте "официальные" клиенты Elasticsearch, поскольку они были разработаны для оптимизации пула соединений и сохранения alives.
  6. Избегайте частых обновлений
    Избегайте частых обновлений (одного и того же документа), поскольку каждое обновление создает новый документ в Elasticsearch и помечает старый документ как удаленный. Это может привести к появлению нескольких удаленных документов и увеличению размеров сегментов, которые не всегда объединяются в процессе слияния сегментов. Чтобы обойти эту проблему, вы можете собрать все эти обновления в приложении, используемом для вызова API индекса (например, в поисковой службе, написанной на Java или Python), чтобы
    1) удалить ненужные обновления (например, многочисленные обновления полей счетчика)
    2) отправить только несколько обновлений в Elasticsearch.
  7. Тщательно разрабатывайте индексную связку
    Будьте внимательны при разработке индексного отображения. Не индексируйте поля, если они не используются для поиска (по умолчанию true), так как это уменьшит размер инвертированного индекса Elasticsearch и сэкономит затраты на анализ поля. Опция index управляет этим.
  8. Осторожно используйте анализаторы
    Осторожно используйте анализаторы на ваших полях; некоторые анализаторы (ngram и т.д.) занимают значительные ресурсы и могут замедлить скорость индексирования и значительно увеличить размер индекса больших текстовых полей.
  9. Используйте параметр Wait_For
    Если некоторые ваши требования требуют немедленного поиска в проиндексированном документе, то вместо явного обновления используйте параметр wait_for при индексировании.
  10. Используйте bulk API
    Используйте bulk API для индексации множества документов вместо того, чтобы индексировать множество документов по отдельности. Производительность Bulk API зависит от размера, а не от количества документов в запросе.
  11. Использовать SSD
    Используйте SSD вместо магнитных дисков для ускорения процесса слияния сегментов.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий