The Elasticsearch Spring
Демонстрационное приложение для изучения технологии Elasticsearch и применения ее вместе с фреймворком Spring. Приложение использует Java 11, Spring Boot 2.3.6, Elasticsearch 7.10.1, PostgreSQL 12.16, Kibana 7.10.1 и Logstash-OSS 7.9.1.
Приложение построено с использованием типичной MVC архитектуры для небольших Spring Boot приложений.
-
Установите Docker и Docker Compose.
-
Склонируйте репозиторий проекта:
git clone https://github.com/irakli8888/elasticsearch-project.git
- Подготовьте окружение с помощью Docker Compose:
cd elasticsearch-project
docker-compose up -d
Для упрощения запуска приложения и его зависимостей мы используем docker-compose
, чтобы создать и настроить контейнеры, необходимые для работы приложения.
Файл docker-compose.yml
содержит определение четырех сервисов:
db
: контейнер PostgreSQL, необходимый для хранения данных приложения;odfe-node
: контейнер Elasticsearch, необходимый для поиска по данным приложения;kibana
: контейнер Kibana, который используется для визуализации данных Elasticsearch;logstash
: контейнер Logstash, который используется для сбора и отправки логов приложения в Elasticsearch.
- Убедитесь, что у вас установлен Docker и Docker Compose.
- Склонируйте репозиторий проекта:
git clone https://github.com/irakli8888/elasticsearch-project.git
- Перейдите в директорию проекта:
cd elasticsearch-project
- Запустите контейнеры с помощью команды:
docker-compose up -d
- Проверьте, что все контейнеры успешно запустились, выполнив команду:
docker-compose ps
Вы должны увидеть следующее:
Name Command State Ports
----------------------------------------------------------------------------------------
elasticsearch-spring-demo_db_1 docker-entrypoint.sh postgres Up 0.0.0.0:5433->5432/tcp
elasticsearch-spring-demo_kibana_1 /usr/local/bin/dumb-init ... Up 0.0.0.0:5601->5601/tcp
elasticsearch-spring-demo_logstash_1 /usr/local/bin/docker-entr ... Up 0.0.0.0:5044->5044/tcp
elasticsearch-spring-demo_odfe-node_1 /usr/local/bin/docker-entr ... Up 0.0.0.0:9200->9200/tcp, 0.0.0.0:9600->9600/tcp
- Вы можете остановить контейнеры с помощью команды:
docker-compose down
Это позволит вам быстро и просто развернуть окружение для тестирования и использования вашего приложения. 4. Соберите и запустите приложение с помощью Maven:
cd demo
mvn spring-boot:run
- Проверьте, что приложение успешно запустилось, открыв http://localhost:8080 в браузере.
Вы можете работать с приложением через REST API или через UI.
Запрос:
POST http://localhost:8080/api/v1/tickets/repo/bulk
Content-Type: application/json
Тело:
{
"tickets": [
{
"ticket_no": "1234555",
"bookRef": "ABC123",
"passengerId": "P12ssssssss3",
"passengerName": "John Doe"
},
{
"ticket_no": "67890",
"bookRef": "DEF456",
"passengerId": "P456",
"passengerName": "Jane Smith"
}
]
}
Запрос:
POST http://localhost:8080/api/v1/tickets/repo
Content-Type: application/json
Тело:
{
"ticketDto": {
"ticket_no": "12345",
"bookRef": "ABC123",
"passengerId": "P123",
"passengerName": "John Doe"
}
}
Запрос:
GET http://localhost:8080/api/v1/tickets/repo?name=MAKSIM
Content-Type: application/json
GET http://localhost:8080/api/v1/tickets/native?q=MAKSIM
Content-Type: application/json
-
Откройте http://localhost:8080/search в браузере.
-
На главной странице вы поисковую строку.
-
Чтобы искать пассажиров по имени, введите их в строку поиска и нажмите на кнопку "Search", поддерживается функция автодополнения.
Для более подробной информации об Elasticsearch и Spring вы можете обратиться к следующим ресурсам: