Итак, в этом посте мы обсудим эластичный поиск и разработаем одно приложение с использованием Spring Boot и эластичного поиска, которое будет обеспечивать более быстрые результаты поиска, а также индексировать данные в эластичном поиске.
Что такое эластичный поиск?
Введение
Elastic — это, по сути, поисковая система, которая используется для более быстрого поиска любых данных, таких как продукты, которые мы ищем на любом веб-сайте электронной коммерции, все они основаны на эластичном поиске.
Технически это распределенная, бесплатная и открытая поисковая и аналитическая система для всех видов данных. Он поддерживает несколько типов данных. Он использует инвертированные индексы для поиска данных.
Эластичный поиск — основная часть стека ELK. Elasticsearch построен на базе Lucene и отлично справляется с полнотекстовым поиском.
Он используется несколькими компаниями для просмотра аналитики данных с использованием различных агрегатных функций.
Подробнее об этом можно прочитать здесь.
Использование эластичного поиска
Основное использование эластичного поиска — это поиск, потому что он очень быстрый почти в режиме реального времени. и у него есть много функций помимо поиска, некоторые из них включают в себя:
- Поиск приложений
- Управление журналом
- Мониторинг
- Полнотекстовый поиск
В Elastic есть множество REST API для выполнения таких операций, как
- Храните документы в индексе.
- Получение документов из индекса
- Запуск аналитических функций для данных
Как протестировать эластичный поиск
Для тестирования эластичного поиска нам нужна настройка эластичного поиска, эту настройку мы можем создать либо с помощью общедоступного облака, такого как (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.
- Используя
ElasticsearchRestTemplate:
Это следует использовать, когда мы хотим создавать более сложные запросы. - Используя репозитории: это очень просто, и в нем определены все методы, а внутри он создает эластичные запросы.
Теперь в нашем демонстрационном приложении мы будем создавать одно приложение 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
и разработаем одно полное приложение для демонстрации функции автозаполнения. что даст нам больше информации о том, как эластичный поиск работает внутри, а до тех пор также взгляните на документацию по эластичному поиску.
Спасибо за прочтение!!
Ссылка: