singularis lab - singularis lab - Опыт использования...Если Вам нужно...
TRANSCRIPT
Опыт использования Elasticsearch
Илья Никляев
IT Meetup’18, 14 апреля 2018, Волгоград
0
Что такое ES?
• Направленность на поисковые запросы
• Движок Lucene
• NoSQL БД
14 апреля 2018 IT Meetup'18, Волгоград 2
0
Что такое ES?
• Документы – JSON-объекты
• Индексы – коллекции документов одного типа
• Mappings – отображения структуры документов на структуру индекса
14 апреля 2018 IT Meetup'18, Волгоград 3
0
Что такое ES?
• REST API:– Индексы
• PUT /customer• GET _cat/indices
– Документы• PUT /customer/_doc/1 { "name": "John Doe" }
– Поиск• GET /bank/_search { "query": { "match_all": {} } }
– Агрегация• GET /bank/_search { "size": 0, "aggs": { "group_by_state": {
"terms": { "field": "state.keyword" } } } }
14 апреля 2018 IT Meetup'18, Волгоград 4
0
Что такое ES?
• Dynamic mapping
– автоматически при индексировании документа
• Explicit mapping
14 апреля 2018 IT Meetup'18, Волгоград 5
0
Наши задачи
• Хранение и удобный просмотр системных логов
• Хранение журналов сущностей
• Построение отчетов по журналам (графики, таблицы)
• Поиск сущностей (+ autocomplete)
14 апреля 2018 IT Meetup'18, Волгоград 6
0
Системные логи
• Что храним:
– плоские объекты
14 апреля 2018 IT Meetup'18, Волгоград 7
0
Системные логи
• Запросы:
– поиск
– фильтрация
14 апреля 2018 IT Meetup'18, Волгоград 8
0
Журналы сущностей
• Что храним:
– объекты с вложенными коллекциями
14 апреля 2018 IT Meetup'18, Волгоград 9
0
Журналы сущностей
• Запросы:
– фильтрация
– агрегация
14 апреля 2018 IT Meetup'18, Волгоград 10
0
Журналы сущностей
14 апреля 2018 IT Meetup'18, Волгоград 11
0
Autocomplete
• Что храним:
– плоские объекты – части сущностей
14 апреля 2018 IT Meetup'18, Волгоград 12
0
Autocomplete
14 апреля 2018 IT Meetup'18, Волгоград 13
0
Autocomplete
• Запросы:
– поиск
14 апреля 2018 IT Meetup'18, Волгоград 14
0
Elasticsearch для .NET: NEST
.NET JSON
14 апреля 2018 IT Meetup'18, Волгоград 15
0
Kibana
14 апреля 2018 IT Meetup'18, Волгоград 16
0
Kibana
14 апреля 2018 IT Meetup'18, Волгоград 17
0
Kibana
14 апреля 2018 IT Meetup'18, Волгоград 18
0
Подводные камни
• Read-only mappings (почти):
– можно добавлять поля
– можно добавлять multi-fields (изменять настройки поиска) к уже существующим полям
• Вложенные коллекции
– по умолчанию хранятся в индексе совсем не так, как можно ожидать
• Нет механизма авторизации
14 апреля 2018 IT Meetup'18, Волгоград 19
0
Результаты
Несколько различных задач решены при помощи одного инструмента
14 апреля 2018 IT Meetup'18, Волгоград 20
0
Выводы
Если Вам нужно выполнять сложные запросы (сложные агрегации, специфичные поисковые запросы для autocomplete)
к массиву данных –
Elasticsearch позволит быстро решить эти задачи
14 апреля 2018 IT Meetup'18, Волгоград 21
0
Ссылки
• Документация по Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
14 апреля 2018 IT Meetup'18, Волгоград 22
014 апреля 2018 IT Meetup'18, Волгоград 23