/
linto
/
opensearch-example
Обзор
Документация
Войти
/
linto
/
opensearch-example
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/example/demo/service/impl/IndexUpdateServiceImpl.java
61 строка
2 KB
linto
init
30 июл 2025, 11:44
30 июл 2025, 11:44
dc5aaf3
Код
Авторство
О чём код?
package com.example.demo.service.impl; import java.util.ArrayList; import java.util.List; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.query.IndexQuery; import org.springframework.data.elasticsearch.core.query.IndexQuery.OpType; import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder; import org.springframework.stereotype.Service; import com.example.demo.opensearch.model.Root; import com.example.demo.service.IndexUpdateService; import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor public class IndexUpdateServiceImpl implements IndexUpdateService { private final ElasticsearchOperations elasticsearchOperations; @Override public void update(List<Root> entities) { int batchSize = 10; for (int i = 0; i < Math.ceil((float) entities.size() / batchSize); i++) { List<Root> batch = entities.subList(batchSize * i, Math.min(batchSize * (i + 1), entities.size())); List<IndexQuery> indexQueries = new ArrayList<>(); batch.forEach(entity -> { IndexQuery indexQuery = new IndexQueryBuilder() .withId(elasticsearchOperations.convertId(entity.getId())) .withOpType(OpType.INDEX) .withObject(entity) .build(); indexQueries.add(indexQuery); }); elasticsearchOperations.bulkIndex(indexQueries, Root.class); // List<UpdateQuery> updateQueries = new ArrayList<>(); // batch.forEach(entity -> { // UpdateQuery updateQuery = // UpdateQuery.builder(elasticsearchOperations.convertId(entity.getId())) // // .withDocAsUpsert(true) // .withDocument(elasticsearchOperations.getElasticsearchConverter().mapObject(entity)) // .withUpsert(elasticsearchOperations.getElasticsearchConverter().mapObject(entity)) // .withRefreshPolicy(RefreshPolicy.IMMEDIATE) // .build(); // updateQueries.add(updateQuery); // }); // elasticsearchOperations.bulkIndex(null, null) // elasticsearchOperations.bulkUpdate(updateQueries, Root.class); } } }