Elasticsearch

Elasticsearch — это распределенный поисковый и аналитический движок, построенный на Apache Lucene, который может обрабатывать большие объемы данных практически в реальном времени.

Основные концепции

  • Index — коллекция документов с похожими характеристиками
  • Document — базовая единица информации в JSON формате
  • Field — ключ-значение пара в документе
  • Mapping — схема, определяющая поля и их типы
  • Node — единичная инстанция Elasticsearch
  • Cluster — группа узлов
  • Shard — часть индекса

Основные операции

 1# Создание индекса
 2PUT /my_index
 3
 4# Добавление документа
 5POST /my_index/_doc/1
 6{
 7  "title": "Elasticsearch Guide",
 8  "content": "Learn how to use Elasticsearch",
 9  "tags": ["search", "analytics"]
10}
11
12# Поиск документов
13GET /my_index/_search
14{
15  "query": {
16    "match": {
17      "content": "elasticsearch"
18    }
19  }
20}
21
22# Агрегации
23GET /my_index/_search
24{
25  "aggs": {
26    "popular_tags": {
27      "terms": {
28        "field": "tags.keyword"
29      }
30    }
31  }
32}

Типы поиска

  • Full-text search — полнотекстовый поиск
  • Structured search — поиск по точным значениям
  • Analytics — агрегации и метрики
  • Geospatial — географический поиск
  • Fuzzy search — поиск с опечатками

ELK Stack

  • Elasticsearch — поиск и аналитика
  • Logstash — сбор и обработка данных
  • Kibana — визуализация данных
  • Beats — легковесные сборщики данных

Применения Elasticsearch

  • Поиск по сайту — полнотекстовый поиск
  • Логирование — анализ логов приложений
  • Мониторинг — метрики производительности
  • Бизнес-аналитика — анализ данных
  • Рекомендательные системы — поиск похожих элементов

FAQ

Подходит ли Elasticsearch как основная база данных?

Elasticsearch оптимизирован для поиска и аналитики. Для транзакционных данных лучше использовать классические БД.