Skip to content

Timo1979-x/tutorial-java-elasticsearch

Repository files navigation

03-02-cluster-partial

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

03-06-node-roles

делаем нодам ограничение по ролям. es01 может быть только мастером, es02 и es03 - только избирателями и хранилками. ПРИМ: чтобы быть избирателем, ноде всё равно нужно указать роль master

Игрища на Java

lesson12-127

Первый тест по созданию и удалению индекса (com.vinsguru.playground.sec01.IndexOperationsTest.createIndex).

Тесты можно запускать так:

./gradlew clean test --tests com.vinsguru.playground.sec01.IndexOperationsTest.createIndex

lesson12-128

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

lesson12-129

Работа с документами с использованием org.springframework.data.elasticsearch.repository.ElasticsearchRepositoryorg.springframework.data.elasticsearch.repository.ElasticsearchRepository

lesson12-130

Массовая вставка/обновление/удаление с использованием org.springframework.data.elasticsearch.repository.ElasticsearchRepositoryorg.springframework.data.elasticsearch.repository.ElasticsearchRepository

lesson12-133

Исследование query methods, т.е. методов в репозитории, на основании имен которых динамически создаются запросы. Типа findAllByNameAndAge.
Добавлены утилитные методы в com.vinsguru.playground.AbstractTest
Включено логирование запросов, геренируемых Спрингом для ElasticSearch
Изменена область тестов: PER_METHOD -> PER_CLASS

lesson12-134

Исследование query methods, продолжение

lesson12-135

Исследование query methods, продолжение. Сортировка и between.

lesson12-136

Pagination

lesson12-138

Query annotation. Можно использовать кастомные запросы, которые можно тонко настраивать - включать fuzziness, slop, tie-breaker...

lesson12-139

Highlighting. если его запросить, то будет заполнено поле highlightFields в возвращаемых объектах org.springframework.data.elasticsearch.core.SearchHits

lesson12-141

Setup для дальнейших лекций

lesson12-142

Criteria query Используется для динамического построения запросов, когда не хватает возможностей @org.springframework.data.elasticsearch.annotations.Query Fuzzy search, комбинирование по And и Or, поле больше или меньше, boost rating...

lesson12-144

Native bool query. Позволяет создавать запросы любой сложности с помощью Builder API.

lesson12-146

aggregation

lesson12-147

Как отличать различные типы аггрегаций

lesson12-149

Autocomplete suggestion

Финальный проект

заполнение БД

Чтобы наполнить данными базу данных, надо:

  • зайти в ./final-project/docker
  • запустить docker compose up (или make up)
  • дождаться полного старта контейнера elasticsearch
  • запустить docker compose run --rm data-setup (или make data-setup)

Команды для проверки

Запуск: ./gradlew bootRun. потом использовать curl для запросов к API, или открыть в браузере http://localhost:8080

тестовые примеры для API

# "Хорошие" запросы
curl 'http://localhost:8080/api/suggestions?prefix=auto&limit=5' | jq

curl 'http://localhost:8080/api/search?query=auto%20dealer' | jq | less
curl 'http://localhost:8080/api/search?query=restaurants' | jq | less
curl 'http://localhost:8080/api/search?query=chinese%20restaurants' | jq | less
curl 'http://localhost:8080/api/search?query=walmart' | jq | less
curl 'http://localhost:8080/api/search?query=walmart&state=Georgia' | jq | less

# "Плохие" запросы
curl 'http://localhost:8080/api/suggestions?prefix=&limit=5' | jq

curl 'http://localhost:8080/api/search' | jq

lesson12-156

Создан шаблон финального проекта (./final-project). Чтобы наполнить данными базу данных, надо:

  • зайти в ./final-project/docker
  • запустить docker compose up (или make up)
  • дождаться полного старта контейнера elasticsearch
  • запустить docker compose run --rm data-setup (или make data-setup)

lesson12-157

Написание методов-помощников для поисковых предложений

lesson12-158

Продолжается написание кода для поисковых предложений

lesson12-159

Валидация, обработка ошибок для поисковых предложений

lesson12-162

Написание базового кода для API поиска

lesson12-163

Утилитные методы для построения поисковых запросов

lesson12-165

пишем инфраструктурный код для построения запросов

lesson12-166

Снова пишем инфраструктурный код для построения запросов

lesson12-167

Созданы необходимые DTO

lesson12-168

создан com.vinsguru.business.service.SearchService, написаны методы поиска

lesson12-169

полностью реализован API для поиска

lesson12-171-174

интеграционные тесты для автодополнения

lesson12-175,176

интеграционные тесты для поиска Исправление ошибок

lesson12-179

Добавлен фронтенд - index.html [f] в результатах не было наименования организации

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

Будем ковыряться с самоподписанным сертификатом для elasticsearch.
забрать самоподписанный сертификат из контейнера:

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

после этого можно работать через https:

curl --cacert http_ca.crt https://localhost:9200 -u elastic:password123
# или
curl --cacert certs/trust-store.crt https://localhost:9200 -u elastic:password123

lesson 14-187

Добавлена конфигурация docker compose для запуска elasticsearch с поддержкой https.

lesson 14-188

Используем формат jks для хранилища сертификатов. однако curl не понимает jks, поэтому надо экспортировать сертификат из jks в формат crt. А java-клиенты могут задействовать certs/elastic.truststore.jks

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages