В жизни бывают взлеты и падения, бывают дни бесконечной красоты, бывают времена, когда люди теряют душу, Когда люди находятся в низшей точке, они могут победить, только если «выживут».
предисловие
Spring Data для Elasticsearch является частью проекта Spring Data, который обеспечивает интеграцию с операциями Elasticsearch для взаимодействия с документами Elasticsearch и простого написания кода уровня доступа.
Создайте новый проект Springboot и проверьте Spring Data Elasticsearch, как показано на рисунке:
После завершения создания откройте помпон и посмотрите, как показано на рисунке:
Подождите, пока 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
1. Аннотация @Document
Атрибуты:
1. indexName имя индекса
2. время интервала обновления индекса refreshInterval.
3, тип хранения индекса indexStoreType, обычно используется niofs
4. Количество шардов, обычно равное количеству узлов elasticsearch.
5, реплики Количество копий, в целом равные осколки - 1
2. Аннотация @Id Аннотация на уровне атрибута, переменная аннотации сопоставляется с полем id документа в индексе.
3. ElasticsearchRepository — это унаследованный класс для реализации операций jpa по указанному индексу.
4. Операционный класс ElasticsearchRestTemplate используется для работы с 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
Как показано на рисунке:
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 есть много методов, которые можно использовать. Названия методов легко понять. Вы можете взгляните. Что касается запроса агрегации, мы продолжим объяснять в следующем выпуске,Всем спасибо за поддержку, спасибо.