hostprofi.ru
Подобрать хостинг
Термин

Elasticsearch

краткое определение

Elasticsearch — поисковая система на Apache Lucene с горизонтальным масштабированием и REST API. Используется в ELK Stack для логирования, поиска по сайту и аналитики в реальном времени.

Elasticsearch — горизонтально масштабируемая поисковая система с полнотекстовым поиском, построенная поверх Apache Lucene. Возвращает результаты за миллисекунды благодаря инвертированному индексу. Используется для поиска по сайту, лог-аналитики (ELK Stack), мониторинга метрик и рекомендательных систем.

Как работает Elasticsearch

Данные хранятся как JSON-документы в индексах. При индексировании документа Elasticsearch строит инвертированный индекс: для каждого слова (токена) — список документов, где оно встречается. Поиск находит токены в индексе и вычисляет релевантность (TF-IDF или BM25) за O(log n).

Запросы выполняются через REST API или Query DSL (Domain Specific Language) в JSON:

GET /products/_search
{
  "query": {
    "match": { "description": "hosting SSD" }
  }
}

Архитектура кластера

  • Index — аналог таблицы: набор документов одного типа.
  • Shard — горизонтальный раздел индекса. Primary shard хранит данные, replica shard — копия.
  • Node — один инстанс Elasticsearch. Роли: master, data, coordinating, ingest.
  • Cluster — набор нод с единым именем. Master-нода координирует шардирование.

ELK Stack и мониторинг

Классический стек для логирования и мониторинга сервера:

  • Elasticsearch — хранение и поиск логов.
  • Logstash — сбор, парсинг и трансформация логов из разных источников.
  • Kibana — визуализация, дашборды, алерты.

Современный вариант — EFK: Elasticsearch + Fluentd + Kibana. Beats (Filebeat, Metricbeat) — лёгкие агенты (20–50 МБ RAM) для отправки данных.

История

Apache Lucene создан Дугом Каттингом (Doug Cutting) в 1999 году — Java-библиотека полнотекстового поиска. Elasticsearch написан Шаем Бановом (Shay Banon) в 2010 году как REST-обёртка поверх Lucene с горизонтальным масштабированием. Elastic N.V. основана в 2012 году, IPO в 2018. В 2021 году Elastic сменила лицензию Apache 2.0 на SSPL/Elastic License — Amazon создал форк OpenSearch.

На что обращать внимание

Elasticsearch требователен к памяти: heap JVM должен составлять 50% доступной RAM, но не более 32 ГБ. На VPS с 4 ГБ RAM — -Xms2g -Xmx2g. Часто запускают через Docker: docker run -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" elasticsearch:8. Managed-варианты: Elastic Cloud ($16/месяц за 2 ГБ heap), Amazon OpenSearch Service. Для небольших объёмов (до 10 ГБ данных) рассмотрите PostgreSQL с pg_trgm — встроенный полнотекстовый поиск без отдельного сервиса.

Настройка безопасности

Elasticsearch 8.x включает security by default: TLS и аутентификация включены при установке. В версиях до 7.x security требовала лицензии Gold или ручной настройки X-Pack. Открытый Elasticsearch без аутентификации — причина сотен утечек данных в 2017–2019 годах.

Минимальная настройка безопасности в elasticsearch.yml:

xpack.security.enabled: true
xpack.security.http.ssl.enabled: true

После запуска: bin/elasticsearch-setup-passwords auto генерирует пароли для встроенных пользователей. UFW закрывает порты 9200 и 9300 для внешних подключений: доступ только с локального IP или через VPN.

Другие термины