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 оптимизирован для поиска и аналитики. Для транзакционных данных лучше использовать классические БД.