Elasticsearch сводит иерархию объектов к парам ключ/значение, потому что в Lucene нет понятия внутренних объектов, как в JSON. Это означает, что нельзя запросить каждый объект независимо от других объектов в массиве. Рассмотрим приведенный ниже пример:
{ "users: [{ "name": "Гена", "age": 26}, { "name": "Вася", "age": 32 }] }
Этот массив объектов хранится так:
{ "users.name": ["Гена", "Вася"], "users.age": [32, 26] }
Массив содержит два пользовательских объекта со свойствами name и age. Когда этот массив хранится в Lucene, все значения свойства в объектах добавляются в виде массива в одно поле — в данном случае поля с именами users.name и users.age. При этом связи между свойствами теряются.
В новой статье в нашем блоге разобрались какие бывают типы данных в Elasticsearch.
{ "users: [{ "name": "Гена", "age": 26}, { "name": "Вася", "age": 32 }] }
Этот массив объектов хранится так:
{ "users.name": ["Гена", "Вася"], "users.age": [32, 26] }
Массив содержит два пользовательских объекта со свойствами name и age. Когда этот массив хранится в Lucene, все значения свойства в объектах добавляются в виде массива в одно поле — в данном случае поля с именами users.name и users.age. При этом связи между свойствами теряются.
В новой статье в нашем блоге разобрались какие бывают типы данных в Elasticsearch.
gals.software
Типы данных Elasticsearch
В этой статье разберемся какие типы данных бывают в Elasticsearch и чем они отличаются
Производительность Elasticsearch может сильно снизиться, если нода вдруг начнет скидывать данные из памяти в своп на диск. Elasticsearch можно настроить, чтобы этого избежать. В этой статье подробности настройки.
👍3
Пару-тройку месяцев назад Elastic ограничил доступ к своему репозиторию из России. Вопрос, конечно, решается при помощи VPN, но есть вариант и попроще - зеркало Яндекс Cloud.
https://mirror.yandex.ru/mirrors/elastic/
https://mirror.yandex.ru/mirrors/elastic/
👍6👎4
Небольшая статья про использование на стороне filebeat процессора set. Если нужно присвоить значение полю по некоему условию, то set — лучший выбор. В статье в качестве примера рассказывается про интеграцию с Wazuh, но использовать такой метод можно где угодно.
В этой статье собраны примеры запросов в Elasticsearch. Статья поможет выбрать оптимальный способ формирования запроса.
42 Elasticsearch Query Examples – Hands-on Tutorial
42 Elasticsearch Query Examples – Hands-on Tutorial
Напоминаем, что уже 20-22 июля мы проведем семинар-инструктаж по Elastic Stack 8. Места ещё есть. Семинар проводится в удалённом формате через Zoom.
Это хорошая возможность быстро освоить популярное решение и начать его эффективно использовать как можно скорее. Если вы знакомы с Elastic не первый месяц или даже год, то велика вероятность, что также узнаете много нового.
Стоимость участия 50 000 рублей. Оплатить можно картой на сайте или по счёту.
Подробности и программа инструктажа на этой странице.
Вопросы можно задать @galssoftware или в форме обратной связи по ссылке выше.
Это хорошая возможность быстро освоить популярное решение и начать его эффективно использовать как можно скорее. Если вы знакомы с Elastic не первый месяц или даже год, то велика вероятность, что также узнаете много нового.
Стоимость участия 50 000 рублей. Оплатить можно картой на сайте или по счёту.
Подробности и программа инструктажа на этой странице.
Вопросы можно задать @galssoftware или в форме обратной связи по ссылке выше.
gals.software
Gals Software | Elastic Stack | Обучение
Обучение работе с ElasticSearch 8, Logstash 8, Kibana 8 (Elastic Stack 8)
👍2
Будьте осторожны с grok-фильтрами в Logstash. Гораздо экономичнее по ресурсам использовать json-фильтр.
В этой статье на Медиуме несколько лайфхаков использования Logstash.
В этой статье на Медиуме несколько лайфхаков использования Logstash.
Medium
Best practices for Logstash
Most of us, working with elastic stack has come to the point where we have to make optimizations in matter of getting better indexing…
Arkime — opensource NTA решение, которое парсит и складывает трафик в Elasticsearch и pcap’ы. Это позволяет анализировать сетевой трафик из веб-интерфейса, что очень и очень удобно. Для безопасников предусмотрена интеграция c Suricata – Arkime умеет сопоставлять алерт с сессией и отображать это в интерфейсе.
В этой статье описание работы с Arkime.
@elasticstack_ru
В этой статье описание работы с Arkime.
@elasticstack_ru
В этой статье про методику борьбы со всплесками нагрузки на кластер Elasticsearch, которую реализовал у себя сервис по продаже авто TrueCar.
В TrueCar мы стараемся максимально упростить процесс покупки автомобиля. Важно иметь актуальный список транспортных средств, чтобы покупатели автомобилей могли видеть, что доступно, а что нет, поэтому мы постоянно обновляем данные в хранилище. Массовое обновление списка мы запускаем несколько раз в день: обновляем цену, рейтинг и доступность авто для покупки.
Обновление происходит либо путем прямых обновлений через веб-приложение, либо с помощью задания Hadoop, которое обрабатывает данные на предмет изменений в цене и доступности. Наш кластер Elasticsearch работал очень хорошо для поиска, но мы заметили, что нагрузка на инфру резко возросла во время выполнения задания по обновлению каталога в момент, когда сайт находился на пике ежедневного трафика. Чтобы поддерживать кластер в пригодном для использования состоянии, нам пришлось снизить скорость индексации кластера. Без снижения скорости индексации загрузка CPU узлов кластера увеличилась с 15 до 80 процентов, а показатели GC увеличились в пять раз, что привело к ошибкам 503 Service Unreachable для любых служб TrueCar, которые отправляли запросы к кластеру Elasticsearch.
В TrueCar мы стараемся максимально упростить процесс покупки автомобиля. Важно иметь актуальный список транспортных средств, чтобы покупатели автомобилей могли видеть, что доступно, а что нет, поэтому мы постоянно обновляем данные в хранилище. Массовое обновление списка мы запускаем несколько раз в день: обновляем цену, рейтинг и доступность авто для покупки.
Обновление происходит либо путем прямых обновлений через веб-приложение, либо с помощью задания Hadoop, которое обрабатывает данные на предмет изменений в цене и доступности. Наш кластер Elasticsearch работал очень хорошо для поиска, но мы заметили, что нагрузка на инфру резко возросла во время выполнения задания по обновлению каталога в момент, когда сайт находился на пике ежедневного трафика. Чтобы поддерживать кластер в пригодном для использования состоянии, нам пришлось снизить скорость индексации кластера. Без снижения скорости индексации загрузка CPU узлов кластера увеличилась с 15 до 80 процентов, а показатели GC увеличились в пять раз, что привело к ошибкам 503 Service Unreachable для любых служб TrueCar, которые отправляли запросы к кластеру Elasticsearch.
Пробовали мигрировать индексы из кластера версии 1.7 в 7.х? В этом видео рассказывают о своём опыте такой миграции.
Исходные данные:
⚡️ 105 нод в облаке AWS
⚡️ 127 индексов
⚡️ 700 шардов
⚡️ 3,7 млрд документов
⚡️ 26 Тб данных
Проблемы с текущей инсталляцией:
⚡️ много ненужных полей в документах
⚡️ большой объем шарда (150Гб)
⚡️ большой объём индекса (500 млн документов)
⚡️ невозможно изолировать данные без даунтайма
⚡️ сложно выполнить реиндексацию (reindex api не было в версии 1.7), когда ⚡️ нужно увеличить количество primary shards
⚡️ дата ноды часто отключались из-за проблем с JVM
Ссылка на видео.
Исходные данные:
⚡️ 105 нод в облаке AWS
⚡️ 127 индексов
⚡️ 700 шардов
⚡️ 3,7 млрд документов
⚡️ 26 Тб данных
Проблемы с текущей инсталляцией:
⚡️ много ненужных полей в документах
⚡️ большой объем шарда (150Гб)
⚡️ большой объём индекса (500 млн документов)
⚡️ невозможно изолировать данные без даунтайма
⚡️ сложно выполнить реиндексацию (reindex api не было в версии 1.7), когда ⚡️ нужно увеличить количество primary shards
⚡️ дата ноды часто отключались из-за проблем с JVM
Ссылка на видео.
Synonyms in Elasticsearch
Синоним — слово, которое означает точно или почти то же самое, что и другое слово.
В этом коротком посте демонстрация реализации синонимов в Elasticsearch, например, сопоставление людей по имени «Anne» при поиске «Ann».
Синоним — слово, которое означает точно или почти то же самое, что и другое слово.
В этом коротком посте демонстрация реализации синонимов в Elasticsearch, например, сопоставление людей по имени «Anne» при поиске «Ann».
Как упростить жизнь разработчиков, которые пишут приложение, работающее с Elasticsearch?
Elasticsearch умеет создавать поисковые запросы в виде поисковых шаблонов (search templates), которые потом можно вызывать с параметрами. Использую готовые шаблоны, разработчики могут не добавлять в код излишние сущности..
Статья с описанием механизма
Страница документации
Elasticsearch умеет создавать поисковые запросы в виде поисковых шаблонов (search templates), которые потом можно вызывать с параметрами. Использую готовые шаблоны, разработчики могут не добавлять в код излишние сущности..
Статья с описанием механизма
Страница документации
Storing 50 million events per second in Elasticsearch: How we did it
Несколько цифр: наш кластер хранит более 150 ТБ данных, 15 триллионов событий в 60 миллиардах документов, разбросанных по 3 000 индексов и 15 000 шардов на 80 узлах. Каждый документ хранит 250 событий в отдельном поле.
Каждый день во время пиковой нагрузки наш кластер Elasticsearch записывает более 200 000 документов в секунду и имеет скорость поиска более 20 000 запросов в секунду.
Наши индексы основаны на ежедневной основе, и у нас есть один индекс для каждого клиента, чтобы обеспечить логическое разделение данных.
И как оптимизировать производительность такого кластера?
Несколько цифр: наш кластер хранит более 150 ТБ данных, 15 триллионов событий в 60 миллиардах документов, разбросанных по 3 000 индексов и 15 000 шардов на 80 узлах. Каждый документ хранит 250 событий в отдельном поле.
Каждый день во время пиковой нагрузки наш кластер Elasticsearch записывает более 200 000 документов в секунду и имеет скорость поиска более 20 000 запросов в секунду.
Наши индексы основаны на ежедневной основе, и у нас есть один индекс для каждого клиента, чтобы обеспечить логическое разделение данных.
И как оптимизировать производительность такого кластера?
👍1
Top 10 Elasticsearch Metrics to Monitor - статья о том, за какими показателями Elasticsearch стоит следить, чтобы кластер был здоров и могуч.
👉 Cluster Health: Shards and Node Availability
👉 Search Query Performance Metrics: Request Rate and Latency
👉 Indexing Performance Metrics: Refresh and Merge Times
👉 Node Health: Memory, Disk, and CPU Metrics
👉 Caching: Field Data, Node Query and Shard Query Cache
👉 JVM Health Metrics: Heap, GC, and Pool Size
Статья.
👉 Cluster Health: Shards and Node Availability
👉 Search Query Performance Metrics: Request Rate and Latency
👉 Indexing Performance Metrics: Refresh and Merge Times
👉 Node Health: Memory, Disk, and CPU Metrics
👉 Caching: Field Data, Node Query and Shard Query Cache
👉 JVM Health Metrics: Heap, GC, and Pool Size
Статья.
👍1
Известно, что заменой Logstash может быть ingest-нода Elasticsearch. Действительно, зачем поддерживать несколько разных решений в стэке, если можно ограничиться одним. Если нет специфичных задач по интеграции или обработке данных именно так мы и советуем поступать нашим клиентам. В статье по ссылке ниже сравнение производительности одного и того же процессора grok в Logstash и в ingest-ноде Elasticsearch. Угадайте, кто показывает лучшую эффективность работы.
Elasticsearch Ingest Node vs Logstash Performance
Elasticsearch Ingest Node vs Logstash Performance
How I Discovered Thousands of Open Databases on AWS
Последнее китайское предупреждение о том, что безопасность кластера Elastic — первоочередная задача, которую нужно решить. Даже если кластер находится внутри периметра компании. В этой статье рассказ о том, как 1 человек за 1 день обнаружил тысячи открытых данных в Elasticsearch. Читать дальше.
На прикрепленном скриншоте данные чьего-то банковского счёта.
Последнее китайское предупреждение о том, что безопасность кластера Elastic — первоочередная задача, которую нужно решить. Даже если кластер находится внутри периметра компании. В этой статье рассказ о том, как 1 человек за 1 день обнаружил тысячи открытых данных в Elasticsearch. Читать дальше.
На прикрепленном скриншоте данные чьего-то банковского счёта.
How to properly handle Elasticsearch ingest pipelines failures
В Logstash есть специальный функционал для обработки сбоев и защита от удаления документов — Dead Letter Queue. В этой статье вы узнаете как использовать Elasticsearch и его ingest pipeline для:
⚡️ обработки сбоев
⚡️ хранения неудачно отправленных документов
⚡️ повторной отправки документов
В Logstash есть специальный функционал для обработки сбоев и защита от удаления документов — Dead Letter Queue. В этой статье вы узнаете как использовать Elasticsearch и его ingest pipeline для:
⚡️ обработки сбоев
⚡️ хранения неудачно отправленных документов
⚡️ повторной отправки документов
Too many fields! 3 ways to prevent mapping explosion in Elasticsearch
В этой статье методика по эффективной работе с полями документов, чтобы их типы и количество не влияли на утилизацию аппаратных ресурсов и, в конечном итоге, на производительность кластера Elasticsearch.
В этой статье методика по эффективной работе с полями документов, чтобы их типы и количество не влияли на утилизацию аппаратных ресурсов и, в конечном итоге, на производительность кластера Elasticsearch.