Итак, в этом посте мы обсудим эластичный поиск и разработаем одно приложение с использованием Spring Boot и эластичного поиска, которое будет обеспечивать более быстрые результаты поиска, а также индексировать данные в эластичном поиске.

Что такое эластичный поиск?

Введение

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

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

Эластичный поиск — основная часть стека ELK. Elasticsearch построен на базе Lucene и отлично справляется с полнотекстовым поиском.

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

Подробнее об этом можно прочитать здесь.

Использование эластичного поиска

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

  1. Поиск приложений
  2. Управление журналом
  3. Мониторинг
  4. Полнотекстовый поиск

В Elastic есть множество REST API для выполнения таких операций, как

  1. Храните документы в индексе.
  2. Получение документов из индекса
  3. Запуск аналитических функций для данных

Как протестировать эластичный поиск

Для тестирования эластичного поиска нам нужна настройка эластичного поиска, эту настройку мы можем создать либо с помощью общедоступного облака, такого как (AWS), либо мы можем запустить экземпляр в нашей локальной системе с помощью докера или напрямую загрузив и запустив его. Или мы можем использовать эластичность в качестве сервиса.

Теперь мы будем разрабатывать одно загрузочное приложение Spring, которое будет использовать эластичную зависимость поиска.

Эта зависимость предоставляет интерфейс для выполнения операций индексирования и поиска вместо прямого использования REST API.

Любые данные, которые мы хотим найти, хранятся в виде документа в индексе. В Spring Boot Document означает класс POJO, такой как (продукт, сотрудник и т. д.)

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

Я использую Docker для выполнения эластичного поиска в нашем демонстрационном приложении.

Запуск эластичного поиска с помощью Docker

Сначала вытяните изображение с помощью команды

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.3.2

Создайте сеть для эластичного поиска и кибаны

docker network create elastic

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

docker run --name es01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.3.2

Теперь скопируйте сертификат из докера в свой локальный

docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

Теперь запустите эластичный поиск в вашем локальном компьютере и введите пароль для эластичного при появлении запроса.

curl --cacert http_ca.crt -u elastic https://localhost:9200

Мы запустили эластик на порту 9200, мы можем протестировать его с помощью https://localhost:9200 и ввести имя пользователя как эластик и ваш сгенерированный пароль.

Теперь соедините беговую резинку с нашим приложением Spring Boot.

Существует два способа выполнения операций по эластичному поиску с использованием Spring Boot.

  1. Используя ElasticsearchRestTemplate: Это следует использовать, когда мы хотим создавать более сложные запросы.
  2. Используя репозитории: это очень просто, и в нем определены все методы, а внутри он создает эластичные запросы.

Теперь в нашем демонстрационном приложении мы будем создавать одно приложение Product, в котором мы можем индексировать несколько продуктов, а затем искать эти продукты.

Для добавления Документа(Товара) нам нужно указать один индекс, в который будут добавлены все товары.

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

Теперь ProductRepo будет иметь все методы, которые есть у ElasticsearchRepository, такие как save(), saveAll(), find() и т. д.

Теперь для индексации (сохранения) записей в эластичные и получения из эластичных мы добавим код в класс обслуживания.

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

List<Product> findByName(String name);

List<Product> findByNameContaining(String name);

List<Product> findByCreatorAndName(String creator, String name);

Теперь для тестирования наших основных функций мы можем использовать Postman и включить журналы трассировки для проверки внутренних запросов.

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

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

Спасибо за прочтение!!

Ссылка: