Рады сообщить, что на нашем сайте вводится новая рубрика статей: "LeanTech в лицах".

Здесь рассказываем об опыте и экспертизе компании с примерами историй и кейсов разработчиков нашей команды.

LeanTech в лицах

Elasticsearch для бизнеса: опыт Java-разработчика нашей команды

07.07.2023
Данные играют важную роль в бизнесе и технологиях. Все больше компаний и организаций осознают, что правильная обработка и анализ данных может дать им конкурентное преимущество.

Этот тезис подтверждают данные от Data Age Report, которые представлены ниже. По этим данным человечество сформировало порядка 80 зеттабайта информации в 2022 году.
Объем данных в мире - статистика и динамика.
И одной из самых мощных и гибких систем для поиска и аналитики данных является Elasticsearch.

В рамках этой темы рассмотрим:

  • Что такое Elasticsearch?
  • Для чего используют Elasticsearch при разработке приложений для бизнеса?
  • Наша экспертиза.
  • Пример первого опыта Java-разработчика нашей команды с Elasticsearch.
  • Дмитрий о своем опыте.
  • Результат Дмитрия.

Что такое Elasticsearch?

Elasticsearch – это распределенный поисковый и аналитический движок на базе Apache Lucene.

Множество языков программирования имеют свою реализацию взаимодействия для поисковых запросов, также Elastic уже из коробки поддерживает REST API.

Очень часто технологию Elastic можно встретить для сбора лог сообщений на стеке ELK (Elasticsearch, Logstash и Kibana), который обеспечивает сбор, обработку и просмотр сообщений.

Если говорить проще, то Elasticsearch - это открытая система, которая используется для поиска, аналитики и обработки больших объемов данных в приложениях бизнеса. Он обеспечивает эффективный и мощный поиск по текстовым данным, позволяет анализировать и визуализировать данные, хранить и анализировать журналы и метрики приложений, создавать системы рекомендаций и многое другое.

Elasticsearch также обладает возможностью масштабирования и отказоустойчивости, что позволяет обрабатывать большие объемы данных и обеспечивать непрерывную работу системы.

Для чего используют Elasticsearch при разработке приложений для бизнеса?

Elasticsearch используется в приложениях бизнеса для решения ряда задач, связанных с поиском, аналитикой и обработкой больших объемов данных.

Здесь некоторые из основных применений Elasticsearch:

1

Полнотекстовый поиск
Elasticsearch обеспечивает мощный и эффективный поиск по текстовым данным. Он позволяет быстро искать и находить информацию в больших объемах текста, используя различные фильтры, агрегации и функции подсветки.

2

Журналирование и мониторинг
Elasticsearch может использоваться для хранения и анализа журналов и метрик приложений. Он позволяет собирать, агрегировать и анализировать данные о производительности, ошибках и событиях в реальном времени.

3

Рекомендации и персонализация
Elasticsearch может быть использован для создания систем рекомендаций и персонализации контента. Он позволяет анализировать предпочтения пользователей и предлагать им релевантный контент на основе их поведения и интересов.

4

Аналитика данных
Elasticsearch обладает мощными возможностями агрегации и фильтрации данных, что делает его идеальным инструментом для анализа больших объемов данных. Он позволяет проводить сложные запросы и визуализировать результаты с помощью инструментов, таких как Kibana - из того же стека ELK.

5

Поиск и обработка логов
Elasticsearch может использоваться для сбора, хранения и анализа логов приложений. Он позволяет быстро находить необходимую информацию в логах и проводить анализ производительности и стабильности системы.

6

Масштабируемость и отказоустойчивость
Elasticsearch обеспечивает возможность горизонтального масштабирования, что позволяет обрабатывать большие объемы данных и обеспечивать высокую доступность системы. Он также предоставляет механизмы репликации и шардирования данных для обеспечения отказоустойчивости.

3 примера известных компаний, которые используют Elasticsearch в своих приложениях


1

Netflix
Одной из известных компаний, использующих Elasticsearch, является Netflix.

Компания использует этот инструмент для:

  • полнотекстового поиска;
  • рекомендаций и персонализации;
  • обработки и анализа логов.

Netflix использует Elasticsearch для поиска, обработки и анализа больших объемов данных, таких как журналы серверов, метрики и данные пользователей, чтобы понять предпочтения своих пользователей и предоставить более точные рекомендации контента и улучшить производительность своей платформы.

Elasticsearch позволяет Netflix быстро и эффективно искать и анализировать данные, что является важным фактором для обеспечения высокого качества обслуживания и удовлетворения потребностей своих миллионов пользователей.

Также Elasticsearch позволяет Netflix быстро и эффективно искать и фильтровать логи, проводить агрегацию данных для выявления проблем и улучшения производительности своей платформы. Это помогает Netflix оперативно реагировать на проблемы и улучшать качество своих услуг для пользователей.

2

Uber
Другой пример из известных компаний, использующих Elasticsearch, - Uber.

Здесь инструмент используется для:

  • журналирования и мониторинга;
  • аналитики данных.
Uber использует Elasticsearch для сбора, хранения и анализа журналов своих приложений и инфраструктуры. Это позволяет им отслеживать производительность системы, обнаруживать проблемы и быстро реагировать на них. Elasticsearch также помогает Uber в мониторинге и анализе данных о поездках, пассажирах и водителях, что позволяет им оптимизировать свою платформу и предоставлять лучший сервис своим клиентам.

3

eBay
И еще один пример из известных компаний - eBay.

Здесь компания использует Elasticsearch для обработки и анализа большого объема данных, включая поиск, фильтрацию и агрегацию информации о товарах, продажах и пользовательской активности.

Elasticsearch позволяет eBay быстро и эффективно обрабатывать и анализировать эти данные, обеспечивая высокую производительность и доступность приложения для миллионов пользователей по всему миру.

Наша экспертиза

В нашей компании ведущие разработчики обладают высокой экспертизой в работе с Elasticsearch. Мы осознаем, что эта система стала неотъемлемой частью многих проектов разработки и может принести огромную пользу нашим клиентам.
Любые вопросы по своему проекту или укреплению команды разработчиков для него можете задать нашим специалистам.

Пример первого опыта Java-разработчика нашей команды с Elasticsearch

Одной из наших успешных историй является опыт Java-разработчика Дмитрия. Решили вынести этот кейс, т.к. несмотря на то, что Дмитрий уже имел немало опыта и знакомился с Elasticsearch на pet-проекте, на проектах нашей компании он никогда раньше не сталкивался с этим.

В процессе работы над проектом у Java-разработчика появилась задача - использовать Elasticsearch для обработки и анализа больших объемов данных в режиме реального времени. Он оперативно освоился с системой и смог достичь желаемых результатов.

Дмитрий о своем опыте

Дмитрий - Java-разработчик команды LeanTech
В конце февраля передо мной поставили большую задачу разработать микросервис для поиска юр.клиентов на Elasticsearch.

Я использовал в своей работе Elasticsearch в стеке ELK, как пользователь для просмотра логов на стендах и был небольшой pet-проект, связанный с этим стеком.

Но по-настоящему разобраться с данной технологией мне удалось на проекте нашего заказчика.

На первом спринте разработки я начал читать официальную документацию и консультироваться с коллегами.

В целом, взаимодействие с командой сыграло немаловажную роль в успешном релизе.

Почти каждый день у меня появлялись вопросы, на которые коллеги мне давали ответы, а если мы не находили его сразу, то шли на созвон в другую команду и уточняли требования.

Первая версия микросевисиса на spring boot c Elastic была разработана для изучения «should» и «must», «match» и «term» - методов при построении логического поиска и получения релевантного результата.

По окончании спринта продемонстрировал реализацию текущей задачи с применением полнотекстового поиска. Была получена положительная обратная связь со стороны заказчика. Сейчас собирается обратная связь со стороны пользователей для дальнейшего улучшения функционала.

Результат работы Java-разработчика с Elasticsearch
Результат труда Дмитрия

Результат Дмитрия

Дмитрий получил опыт работы с Elasticsearch и вместе с другими коллегами реализовал микросервис на Spring Boot.

Реализованное им решение существенно упростило и улучшило поиск бизнес-данных по:

  • идентификатору;
  • полному и сокращенному наименованию;
  • реквизитам.
Для наглядности вынесли сравнение данных в таблицу ниже.
Критерий
  • Сортировка результатов поиска
  • Пагинация
  • Количество выдаваемых результатов на 1 странице
  • Скорость загрузки результатов поиска
Реализация .Net
  • Хаотичная
  • С плавающими дефектами
  • Строгое требование - 100
  • С незначительными задержками
Реализация Java
  • Выстроена в соответствии с требованиями компании-заказчика
  • Отсутствие дефектов
  • Гибкость в количестве результатов: 10, 25 и т.д.
  • Без задержек
Поясним про пагинацию, т.к. не говорили об этом выше.

Пагинация - это разделение большого массива данных на отдельные страницы. Дефекты в реализации на .Net заключались в том, что количество страниц с результатами поиска не всегда отображалось корректно.

Количество выдаваемых результатов на 1 странице решили снизить и сделать гибким для оптимизации загрузки данных. Таким образом, удалось устранить задержки в их выдаче.

  1. Наш Java-разработчик помог в переходе со старой реализации .Net на Java за оптимальный срок.
  2. Также в новой реализации команда избежала багов, которые были в старой реализации поиска.
  3. Микросервис для поиска вот уже как пару месяцев был развернут на продакшен стенд, и результатом работы потребители сервиса остались довольны.

Заключение

Наши эксперты по Elasticsearch имеют глубокое понимание основных компонентов и функциональности этой системы. Они способны создавать и настраивать индексы, оптимизировать запросы и использовать различные агрегации для получения полезной информации из данных.

Наши разработчики также обладают опытом работы с полным стеком ELK: Elasticsearch, Logstash, Kibana.

Наша команда готова помочь Вашей компании в использовании Elasticsearch для различных целей, включая поиск и анализ данных, мониторинг и логирование, а также машинное обучение. Мы уверены, что наша экспертиза и опыт позволят нам эффективно реализовать ваши проекты с использованием этой мощной технологии.
Если Вы заинтересованы в использовании Elasticsearch или имеете какие-либо вопросы, не стесняйтесь связаться с нами. Мы с радостью поможем Вам реализовать Ваши идеи и достичь бизнес-целей с помощью Elasticsearch и других инструментов.