Как я изучил Elasticsearch |
Обо мне
Привет, дорогой,
Меня зовут Мурали, я сильный и опытный профессионал в разработке SDLC, Agile и Java/J2EE.
Почему я хотел изучить Elasticsearch
Любит изучать новые и/или появляющиеся технологии.
Изучение новых технологий придаст уверенности и улучшит ваши навыки и способность делать любые сложные вещи.
Продолжайте читать, продолжайте двигаться к технологиям.
Как я подошел к изучению Elasticsearch
Начните с прочтения Полного руководства: Elasticsearch: Полное руководство.
Во время чтения руководства создайте небольшой кластер Elasticsearch с одним узлом.
Установка довольно проста. Вы можете сделать это и в Windows.
Понимание поиска, анализа и релевантности.
Понимание агрегатов.
Проблемы, с которыми я столкнулся
Распределение осколков:
В качестве высокоуровневой стратегии, если вы создаете индекс, который планируете часто обновлять, убедитесь, что вы выделили достаточно первичных сегментов, чтобы вы могли равномерно распределить индексирующую нагрузку на все ваши узлы. Общая рекомендация состоит в том, чтобы выделить один первичный сегмент на узел в вашем кластере и, возможно, два или более первичных сегмента на узел, но только в том случае, если на этих узлах у вас большая пропускная способность ЦП и диска. Однако имейте в виду, что избыточное выделение фрагментов увеличивает нагрузку и может негативно повлиять на поиск, поскольку поисковые запросы должны попадать в каждый сегмент в индексе. С другой стороны, если вы назначите меньше первичных сегментов, чем количество узлов, вы можете создать горячие точки, поскольку узлам, содержащим эти сегменты, потребуется обрабатывать больше запросов на индексирование, чем узлам, которые не содержат ни одного из сегментов индекса.
Отключить регулирование слияния:
Регулирование слияния — это автоматическая тенденция Elasticsearch регулировать запросы на индексацию, когда обнаруживает, что слияние отстает от индексации. Имеет смысл обновить настройки вашего кластера, чтобы отключить регулирование слияния (установив для index.store.throttle.type значение «none»), если вы хотите оптимизировать производительность индексирования, а не поиска. Вы можете сделать это изменение постоянным (это означает, что оно сохранится после перезапуска кластера) или временным (возврат к значениям по умолчанию при перезапуске), в зависимости от вашего варианта использования.
Увеличьте размер буфера индексации:
Этот параметр (indices.memory.index_buffer_size) определяет, насколько полным может быть буфер, прежде чем его документы будут записаны в сегмент на диске. Параметр по умолчанию ограничивает это значение до 10 процентов от общей кучи, чтобы зарезервировать больше кучи для обслуживания поисковых запросов, что не поможет вам, если вы используете Elasticsearch в основном для индексации.
Сначала индексируйте, потом реплицируйте:
При инициализации индекса укажите нулевые сегменты реплик в настройках индекса и добавьте реплики после завершения индексации. Это повысит производительность индексирования, но может быть немного рискованно, если узел, содержащий единственную копию данных, выйдет из строя до того, как вы сможете его реплицировать.
Обновлять реже:
Увеличьте интервал обновления в API настроек индекса. По умолчанию процесс обновления индекса происходит каждую секунду, но в периоды интенсивного индексирования уменьшение частоты обновления может частично облегчить нагрузку.
Измените настройки транслога:
Начиная с версии 2.0, Elasticsearch будет сбрасывать данные транслога на диск после каждого запроса, что снижает риск потери данных в случае сбоя оборудования. Если вы хотите, чтобы производительность индексирования была важнее потенциальной потери данных, вы можете изменить index.translog.durability на асинхронный в настройках индекса. При этом индекс будет фиксировать запись на диск только после каждого sync_interval, а не после каждого запроса, оставляя больше своих ресурсов свободными для обслуживания запросов на индексирование.
Основные выводы
Изучая эластичность, мы также можем познакомиться / стать экспертом в следующих технологиях.
- СОЛР
- КИБАНА
- ЛОГСТАШ
- УДАРЫ
Используйте разные источники данных. Индексируйте данные из Logstash, Hadoop-Hive, Pig и Spark. Elastic имеет отличный коннектор Hadoop. Эластичный поиск для Hadoop.
Поиграйте с конфигурацией. Одно изменение за раз. Обратите внимание, как эти изменения влияют на индексацию и эффективность поиска.
Советы и советы
Начните индексировать данные в Elasticsearch. Сначала используйте динамическое сопоставление и посмотрите, как сопоставляются поля. Затем используйте пользовательские сопоставления.
Попробуйте использовать некоторые анализаторы строк и проверьте, как они индексируются.
Запросите свои данные с помощью Query DSL.
Заключительные мысли и следующие шаги
Спасибо, что прочитали этот пост — надеюсь, он был вам полезен. Вы можете найти меня на Гитхаб, LinkedIn и КодМентор. Если у вас есть какие-либо вопросы, не стесняйтесь обращаться ко мне!