[ElasticSearch с самого начала] Spring boot, интегрированная операция Spring Data Elasticsearch Elasticsearch

Java

9150e4e5ly1flvtmb43t9g208c08caai.gif

В жизни бывают взлеты и падения, бывают дни бесконечной красоты, бывают времена, когда люди теряют душу, Когда люди находятся в низшей точке, они могут победить, только если «выживут».


предисловие

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


01Интеграция Spring Data Elasticsearch

Создайте новый проект Springboot и проверьте Spring Data Elasticsearch, как показано на рисунке:

image.png

После завершения создания откройте помпон и посмотрите, как показано на рисунке:

image.png

Подождите, пока maven вытащит все зависимости, затем откройте application.properties и добавьте следующие конфигурации:

1. spring.data.elasticsearch.repositories.enabled=true (открытое хранилище elasticsearch, по умолчанию true)

2. spring.elasticsearch.rest.uris=elasticsearch ip: порт или имя домена elasticsearch (адрес подключения elasticsearch)

3. spring.data.elasticsearch.client.reactive.connection-timeout=3000 (время ожидания соединения elasticsearch)

4. spring.data.elasticsearch.client.reactive.socket-timeout=3000 (время ожидания сокета)

следующее:

spring.application.name=elasticSearchDemo
server.port=8080
# 开启es仓库
spring.data.elasticsearch.repositories.enabled=true
spring.elasticsearch.rest.uris=http://127.0.0.1:9200
spring.data.elasticsearch.client.reactive.connection-timeout=3000
spring.data.elasticsearch.client.reactive.socket-timeout=3000


02Ядро Spring Data Elasticsearch

1. Аннотация @Document

Атрибуты:

1. indexName имя индекса

2. время интервала обновления индекса refreshInterval.

3, тип хранения индекса indexStoreType, обычно используется niofs

4. Количество шардов, обычно равное количеству узлов elasticsearch.

5, реплики Количество копий, в целом равные осколки - 1

2. Аннотация @Id Аннотация на уровне атрибута, переменная аннотации сопоставляется с полем id документа в индексе.

3. ElasticsearchRepository — это унаследованный класс для реализации операций jpa по указанному индексу.

4. Операционный класс ElasticsearchRestTemplate используется для работы с elasticsearch.


03Реализовать добавление, удаление и модификацию операции elasticsearch.

1. Создайте класс DemoDO для отображения индекса в elasticsearch.

1. Добавьте аннотации к классу:

    @Document(indexName = "demo", refreshInterval = "30s", indexStoreType = "niofs", shards = 1, replicas = 0)

2, добавить атрибуты: id, name, age, nickName, device, lastLoginDate

3. Добавьте аннотацию к идентификатору атрибута: @Id

4. Добавьте get/set и toString

Как показано на рисунке:

image.png

2. Создайте интерфейс DemoRepository для реализации операций jpa.

1. Наследовать ElasticsearchRepository

2. Первый тип ElasticsearchRepository — это DemoDO, а второй тип — String, что означает, что интерфейс используется для работы с индексом, записанным indexName из DemoDO, а id имеет тип String (id для elasticsearch имеет тип строка по умолчанию)

следующее:

package com.elasticsearch.demo.repository;

import com.elasticsearch.demo.dataobject.DemoDO;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface DemoRepository extends ElasticsearchRepository<DemoDO, String> {
}

После выполнения этих двух шагов подготовительная работа завершена.

Затем мы используем DemoRepository для работы с elasticsearch:

1. Создайте класс модульного теста

@SpringBootTest
class ElasticSearchDemoApplicationTests

2. Внедрить демо-репозиторий

@Autowired
private DemoRepository repository;

3. Добавить метод сохранения


@Test
public void save() {
DemoDO demoDO = new DemoDO();
   demoDO.setDevice("phone");
   demoDO.setAge((int) (Math.random() * 10 + 1));
   demoDO.setName(UUID.randomUUID().toString());
   demoDO.setNickName(UUID.randomUUID().toString());
   demoDO.setLastLoginDate(new Date());
   repository.save(demoDO);
}

3. Новый метод модификации (на самом деле demoDO устанавливает значение id, которое для модификации)

@Test
public void update() {
DemoDO demoDO = new DemoDO();
   demoDO.setId("");
   demoDO.setDevice("phone");
   demoDO.setAge((int) (Math.random() * 10 + 1));
   demoDO.setName(UUID.randomUUID().toString());
   demoDO.setNickName(UUID.randomUUID().toString());
   demoDO.setLastLoginDate(new Date());
   repository.save(demoDO);
}

4. Новый метод поиска

@Test
public void query() {
Iterable<DemoDO> demoDOIterator = repository.findAll();
}

5. Добавьте метод удаления

@Test
public void deleteAll() {
repository.deleteAll();
}


Суммировать

В настоящее время данные об операции elasticsearch все еще относительно малы. Я надеюсь, что моя статья поможет вам напомнить и решить проблемы в повседневной работе. В jpa есть много методов, которые можно использовать. Названия методов легко понять. Вы можете взгляните. Что касается запроса агрегации, мы продолжим объяснять в следующем выпуске,Всем спасибо за поддержку, спасибо.


1d539c0bf7d7bb104a29bf93ff2db6ed.png

С дрожанием маленькой руки, есть как