Как настроить Elasticsearch для быстрой индексации? - PullRequest
0 голосов
/ 11 октября 2018

Мой ElasticSearch не собирается выполнять некоторые сложные запросы.Я использую ElasticSearch только для быстрой производительности поиска по большим наборам данных.

Работает нормально.Поиск прост и быстр.

Но с увеличением количества документов в индексе добавление новых документов становится медленным и медленным.

  • Если размер индекса невелик, добавление / индексирование 1 миллиона документов займет около 250 секунд.
  • Но когда размер того же индекса достигнет 50 ГБ, добавление 1 миллиона документов займет около 1000 секунд.
  • Когда размер того же индекса достигнет 100 ГБ, добавление 1 миллиона документов займет гораздо больше времени.
  • И иногда в процессе индексации 1 миллиона документов я вижу ошибку эластичного поискового соединения, и эта ошибка связана с кодами рядом со строкой кодов."//<2.0" я просто взорвал "неструктурированное исключение".И я вижу эту ошибку, только когда пытаюсь проиндексировать 1 миллион документов для большого индекса (около 100 ГБ).Когда размер индекса меньше, я не вижу этой ошибки в журнале. </li>

Я хотел бы настроить кластеры ElasticSearch, чтобы он по-прежнему быстро возвращал результаты поиска, но я также хочу, чтобы она былавозможность индексации / добавления документов быстро, даже когда индекс достигает размера 100 ГБ или больше.

Я бы

  • Использовал бы 3 узла в одном кластере (я не нашел хорошего ответа числаузлов в кластере, так что три, кажется, хорошее число, как предлагают некоторые статьи)
  • Я бы использовал 5 осколков 1 реплика для каждого индекса.(Я тоже не нашел хорошего числа, это номер по умолчанию)
  • Сейчас у меня 5-10 индексов на один кластер, размер кластера составляет 1000 ГБ (используется 300 ГБ).Вместо запуска 10 индексов на кластере 1000 ГБ, если бы я запускал один индекс на один кластер (размер кластера 200 ГБ), это было бы лучше с точки зрения индексации и поиска?
  • Документы, которые я добавил в индексобобщены прогнозируемые данные.в документе есть поля с номерами от 6 до 12 и т. д. Я сделал большинство типов данных ключевых слов полей, если я сделаю меньше полей, например, только половину ключевых слов полей, насколько я могу повысить скорость индексации документов?(в моем случае размер индекса достигает 100 ГБ, и каждый день я пакетирую индекс / добавляю к нему 1 миллион документов.

Итак, какие изменения я могу внести в вышеуказанную настройку, чтобы улучшить индексациюскорость и производительность, а также уменьшить ошибку, такую ​​как ошибка подключения Elasticsearch в процессе?

Я использую размещенный на AWS Elasticsearch.

Что еще я мог сделать?

Спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

Когда вы индексируете документы, ваш кластер es пытается синхронизировать эти данные и с другими узлами.Для повышения производительности индексирования могут быть сделаны некоторые улучшения.

1 - Установите большое значение refresh_interval при индексировании.Это задержит синхронизацию данных между узлами и ускорит индексацию.

2 - Сохраните оптимальный размер пакета при массовой индексации.

3 - Установите правильный размер кучи, например, для узла 64 ГБ.быть оптимальной кучей.Для деталей - https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html

4 - Увеличение дескрипторов файлов и MMap - https://www.elastic.co/guide/en/elasticsearch/guide/current/_file_descriptors_and_mmap.html

5 - Если вы преобразуете свои данные во время приема, тогда можно использовать выделенный узел приема - https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

6 - отключить репликацию (вы можете включить ее после большой индексации)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...