Научная статья на тему 'Корпоративное решение с использованием поисковой системы Elasticsearch'

Корпоративное решение с использованием поисковой системы Elasticsearch Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
224
74
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
Elasticsereach / Lucene / полнотекстовый поиск / данные / Elasticsearch / Lucene / full-text search / data

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Пьянзин Станислав Александрович, Григорьев Юрий Александрович, Щеглов Дмитрий Сергеевич

Использование Elasticsearch это способ упорядочить данные и сделать их легко доступными. Он реализует серверный поиск в Lucene. Это хорошо масштабируемая, распределенная и полнотекстовая поисковая система. Elasticsearch разработан на Java. Он публикуется как открытый исходный код в соответствии с условиями лицензии Apache. Elasticsearch самая популярная поисковая система для полнотекстового поиска. Elasticsearch включает в себя современные достижения в скорости, безопасности, масштабируемости и эффективности использования оборудования. Он может выполнять некоторые другие «умные» задачи, но его принцип возвращать текст, релевантный заданному запросу, и выполнять статистический анализ текста. Elasticsearch это автономный сервер баз данных, который написан на Java и использует протокол HTTP / JSON, он принимает данные и оптимизирует данные в соответствии с поиском на основе языка и сохраняет их в сложном формате. Elasticsearch достаточно удобен, поддерживает кластеризацию.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

CORPORATE SOLUTION USING ELASTICSEARCH SEARCH SYSTEM

Using Elasticsearch is a way to organize your data and make it easily accessible. It implements server search in Lucene. It is a highly scalable, distributed and full-text search engine. Elasticsearch is developed in Java. It is published as open source under the terms of the Apache license. Elasticsearch is the most popular full-text search engine. Elasticsearch incorporates state-of-the-art advances in speed, security, scalability and equipment utilization. He can perform some other “smart” tasks, but his principle is to return text relevant to a given query and perform statistical analysis of the text. Elasticsearch is a standalone database server that is written in Java and uses the HTTP / JSON protocol, it receives data and optimizes the data according to the language-based search and saves them in a complex format. Elasticsearch is quite convenient, it supports clustering.

Текст научной работы на тему «Корпоративное решение с использованием поисковой системы Elasticsearch»

КОРПОРАТИВНОЕ РЕШЕНИЕ С ИСПОЛЬЗОВАНИЕМ ПОИСКОВОЙ СИСТЕМЫ ELASTICSEARCH

CORPORATE SOLUTION USING ELASTICSEARCH SEARCH SYSTEM

УДК-004

Пьянзин Станислав Александрович, студент, МГТУ им. Н.Э. Баумана, Россия, г. Москва

Григорьев Юрий Александрович, доктор технических наук, МГТУ им. Н.Э. Баумана, Россия, г. Москва

Щеглов Дмитрий Сергеевич, студент, МГТУ им. Н.Э. Баумана, Россия, г. Москва

Pyanzin Stanislav, pianzin.sa@gmail .com Grigoryev Yuri Scheglov Dmitry

АННОТАЦИЯ

Использование Elasticsearch - это способ упорядочить данные и сделать их легко доступными. Он реализует серверный поиск в Lucene. Это хорошо масштабируемая, распределенная и полнотекстовая поисковая система. Elasticsearch разработан на Java. Он публикуется как открытый исходный код в соответствии с условиями лицензии Apache. Elasticsearch - самая популярная поисковая система для полнотекстового поиска. Elasticsearch включает в себя современные достижения в скорости, безопасности, масштабируемости и эффективности использования оборудования. Он может выполнять некоторые другие «умные» задачи, но его принцип - возвращать текст, релевантный заданному запросу, и выполнять статистический анализ текста. Elasticsearch -это автономный сервер баз данных, который написан на Java и использует протокол HTTP / JSON, он принимает данные и оптимизирует данные в соответствии с поиском на основе языка и сохраняет их в сложном формате. Elasticsearch достаточно удобен, поддерживает кластеризацию.

ABSTRACT

Using Elasticsearch is a way to organize your data and make it easily accessible. It implements server search in Lucene. It is a highly scalable, distributed and full-text search engine. Elasticsearch is developed in Java. It is published as open source under the terms of the Apache license. Elasticsearch is the most popular full-text search engine. Elasticsearch incorporates state-of-the-art advances in speed,

security, scalability and equipment utilization. He can perform some other "smart" tasks, but his principle is to return text relevant to a given query and perform statistical analysis of the text. Elasticsearch is a standalone database server that is written in Java and uses the HTTP / JSON protocol, it receives data and optimizes the data according to the language-based search and saves them in a complex format. Elasticsearch is quite convenient, it supports clustering.

Ключевые слова: Elasticsereach, Lucene, полнотекстовый поиск, данные

Keywords: Elasticsearch, Lucene, full-text search, data

1. Введение

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

Lucene используется огромным количеством компаний, начиная от крупных корпораций, таких как Twitter, и заканчивая небольшими стартапами. Lucene демонстрируется, тестируется и считается в своем роде лучшим программным обеспечением с открытым исходным кодом для выполнения полнотекстового поиска. Большинство рациональных усилий, которые пользователи Elasticsearch выделяют на задачу полнотекстового поиска, связаны с использованием Lucene API.

2. Преимущества использования

Хотя Lucene является полноценным инструментом, он громоздок для непосредственного использования и предоставляет мало возможностей для масштабирования на одной машине. Elasticsearch предоставляет более простой API, чем базовый Lucene Java API. Важно, что lucene также предоставляет документацию для выполнения реализации, которая делает масштабирование между машинами и центрами обработки данных относительно простым. Ниже приведены некоторые особенности Elasticsearch, которые подводят к основам Lucene:

• Более простой API.

• Связь не с Java/JVM языками.

• Простота использования.

• Кластеризация и репликация.

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

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

3.1 Индекс

Elasticsearch хранит свои данные в одном или нескольких индексах. Используя аналогию с системами SQL, индексирование похоже на базу данных. Индекс используется для хранения документов и их считывания. Elasticsearch использует библиотеку Apache Lucene для записи и чтения данных из индекса. Индекс Elasticsearch может быть построен более чем из одного индекса Apache Lucene с помощью шардов.

3.2 Документ

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

3.3 Тип

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

3.4 Маппинг

Все документы анализируются перед индексированием. Входной текст делится на маркеры, которые следует отфильтровать, или на то, какая дополнительная обработка необходима, например, удаление HTML-тегов. Именно здесь играет роль маппинг, он содержит всю информацию о цепочке анализа.

3.5 Узел

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

Второй тип узлов — это главный узел, который работает в качестве супервайзера кластера, контролирующего работу других узлов.

Третий тип узла - узел племени (Tribe). Данный узел может объединять несколько кластеров и таким образом выступать в качестве моста между ними, позволяя выполнять почти все функции Elasticsearch на нескольких кластерах. Третий уровень считается нежелательным, ввиду появления функции кросс-кластерного поиска.

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

3.6 Кластер

Кластер — это набор узлов Elasticsearch, которые работают вместе. Распределенная природа Elasticsearch позволяет легко обрабатывать данные, которые слишком велики для одного узла.

3.7 Шарды

Кластеризация позволяет хранить объемы информации, превышающие возможности одного сервера. Чтобы выполнить это требование, Elasticsearch распространяет данные на несколько физических индексов Lucene. Эти индексы называются сегментами, а все части индекса называются шардами. Elasticsearch может сделать это автоматически, и все части индекса (шарды) видны пользователю как один большой индекс.

3.8 Репликация

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

3.9 Ключевые концепции архитектуры Elasticsearch

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

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

• Работа в распределенном режиме по умолчанию. Узел настраивается с учётом, что он являются или будет частью кластера.

• Одноранговая архитектура без единой точки отказа (SPOF). Узлы автоматически подключаются к другим машинам в кластере для обмена данными и взаимного мониторинга. Это относится к автоматической репликации шардов.

• Легко масштабируется как с точки зрения ресурсов, так и объема данных путем добавления новых узлов в кластер.

• Elasticsearch не накладывает ограничений на организацию данных в индексе. Это позволяет пользователю адаптироваться к существующей модели данных. Поиск и управление версиями выполняются в режиме реального времени (N^1). Из-за распределенного характера Elasticsearch невозможно избежать задержек и временных различий между данными, расположенными на разных узлах. Elasticsearch пытается ослабить эти проблемы и предоставляет дополнительные механизмы в виде управления версиями.

4. Работа Elasticsearch

В следующем разделе приведена информация о ключевых функциях Elasticsearch, таких как быстрое начало работы, обнаружение сбоев, индексирование данных, запросы и т. д.

4.1 Процесс запуска

Когда узел Elasticsearch запускается, он использует модуль обнаружения, чтобы найти другие узлы в том же кластере и подключиться к ним. По умолчанию запрос многоадресной рассылки передается в сеть для поиска других узлов Elasticsearch с тем же именем кластера. На рисунке 1 в качестве главного узла выбирается кластер, один из узлов которого является ведущим. Этот узел отвечает за управление состоянием кластера и процесс назначения сегментов узлу в ответ на изменения топологии кластера. Главный узел считывает состояние кластера и при необходимости переходит к процессу восстановления. Во время этого состояния он проверяет, какие шарды доступны, и решает, какие шарды будут основными. После этого весь кластер переходит в «желтое» состояние. Это означает, что кластер способен выполнять запросы, но полная пропускная способность и все возможности еще не достигнуты. Следующее, что нужно сделать главному узлу, это найти дубликаты шардов и рассматривать их как копии (рисунок 2). Если у фрагмента слишком мало реплик, главный узел решает, куда поместить недостающие фрагменты, и на основе первичного фрагмента создаются дополнительные реплики.

Рисунок 1. Процесс запуска Elasticsearch

4.2 Индексация данных

Существует несколько способов отправки данных в Elasticsearch. Проще всего использовать API, который позволяет отправлять один документ в определенный индекс. Второй способ позволяет отправлять большое количество документов с помощью bulk API и UDP bulk API. Разница между этими двумя методами заключается в типе соединения. Общий bulk API отправляет документы по протоколу HTTP, а UDP bulk API - через протокол пользовательских датаграмм без установления соединения. Это быстрее, но не так надежно.

Рисунок 2. Индексация данных в Е1а8йс8еагсН с использованием реплик 4.3 Запрос данных

API запросов — это основная часть API Elasticsearch. Процесс выполнения запроса можно разделить на две фазы: фазу рассеивания и фазу сбора (рисунок 3). Фаза рассеяния — это чтение всех соответствующих фрагментов индекса. Фаза сбора — это сбор результатов из соответствующих шардов, их объединение, сортировка, обработка и возврат клиенту.

Рисунок 3. Запрос данных в Elasticsearch

5. Amazon Elasticsearch Service

Amazon Elasticsearch Service — это управляемый сервис, который упрощает развертывание, эксплуатацию и масштабирование Elasticsearch в облаке AWS. Amazon Elasticsearch Service предоставляет все ресурсы для кластера и запускает его. Служба автоматически обнаруживает узлы Elasticsearch и заменяет вышедшие из строя узлы, уменьшая накладные расходы, связанные с самоуправляемым программным обеспечением и инфраструктурой Elasticsearch. Amazon Elasticsearch Service позволяет легко масштабировать кластер с помощью одного вызова API или нескольких щелчков мыши в консоли управления AWS.

5.1 Преимущества использования Amazon Elasticsearch

5.1.1 Простота развертывания

Сервис Amazon Elasticsearch легко развертывается в облаке AWS. Используя консоль управления AWS (вызовы API), можно легко получить доступ к готовому к работе кластеру Amazon Elasticsearch за считанные

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

5.1.2 Легкое администрирование

Amazon Elasticsearch Service упрощает трудоемкие задачи управления, такие как обеспечение высокой доступности, управление исправлениями, обнаружение сбоев и замена узлов, резервное копирование и мониторинг, что позволяет добиваться более низкой стоимости разработки приложений.

5.1.3 Масштабируемость

Amazon Elasticsearch Service позволяет отслеживать состояние кластера с помощью метрик Amazon CloudWatch и изменять размер кластера вверх или вниз с помощью одного вызова API или нескольких щелчков мыши на консоли управления AWS.

5.1.4 Интеграция с Logstash и Kibana

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

5.1.5 Экономическая выгода

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

5.1.6 Безопасность

Пользователь может управлять доступом к API Elasticsearch с помощью политик AWS Identity and Access Management (IAM). С помощью политик IAM пользователь может разрешить приложениям безопасный доступ к кластерам Amazon Elasticsearch.

6. Выводы

Elasticsearch позволяет быстро и почти в реальном времени хранить, искать и анализировать огромное количество данных. Elasticsearch - это удобный инструмент поиска с открытым исходным кодом, построенный на Lucene (как SOLR), но изначально JSON + RESTful. Кроме того, поскольку его легко настроить локально, это простой вариант для организации хранения

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

Литература

1. Григорьев Ю.А., Плутенко А.Д., Плужникова О.Ю. Реляционные базы данных и системы NoSQL. Амурский гос. ун-т, МГТУ им. Н. Э. Баумана. - Благовещенск: Изд-во Амурского гос. ун-та, 2018. - 420 с.

2. Григорьев Ю.А., Цвященко Е.В., Анализ характеристик согласования реплик в конечном счете в базах данных NoSQL. [Электронный ресурс]. URL: https: //elibrary.ru/item.asp?id=21944207 (дата обращения: 02.03.2020).

3. Amazon Web Service. [Электронный ресурс]. URL: https: //aws .amazon.com/ru/elasticsearch-service (дата обращения: 03.03.2020).

4. Миндалёв И. В. Информационные системы [Электронный ресурс] http://enisey.name/umk/upr21 /index.html (дата обращения: 03.03.2020).

5. Рогова Н А. Тезаурус как средство повышения эффективности современных информационно- поисковых систем [Электронный ресурс]. https://cyberleninka.ru/article/ntezaurus-kak-sredstvo-povysheniya-effektivnosti-sovremennyh-informatsionno-poiskovyh-sistem (дата обращения: 03.03.2020).

6. Захарченко В. М. Программы поиска информации в полнотекстовых базах данных [Электронный ресурс] http://www.rstu.ru/metods/books/zakhar.pdf (дата обращения: 03.03.2020).

Literature

1. Grigoriev Yu. a., Plutenko A.D., Pluzhnikova O. Yu. Relational databases and NoSQL systems. Amur state. UN-t, Bauman Moscow state technical University. - Blagoveshchensk: publishing house of the Amur state. UN-TA, 2018. - 420 p.

2. Grigoriev Yu. a., Tsvyashchenko E. V., Analysis of characteristics of replicas matching in the end in NoSQL databases. [Electronic resource]. URL: https://elibrary.ru/item.asp?id=21944207 (accessed: 02.03.2020).

3. Amazon Web Service. [Electronic resource]. URL: https://aws.amazon.com/ru/elasticsearch-service (date accessed: 03.03.2020).

4. Mindalev I. V. Information systems [Electronic resource] http://enisey.name/umk/upr21/index.html (accessed: 03.03.2020).

5. Rogova N. A. Thesaurus as a means of improving the efficiency of modern information and search systems [Electronic resource]. https://cyberleninka.ru/article/n/tezaurus-kak-sredstvo-povysheniya-effektivnosti-sovremennyh-informatsionno-poiskovyh-sistem (accessed: 03.03.2020).

6. Zakharchenko V. M. Programs for searching information in full-text databases [Electronic resource] http://www.rstu.ru/metods/books/zakhar.pdf (accessed: 03.03.2020).

i Надоели баннеры? Вы всегда можете отключить рекламу.