В Spring-batch есть ли поддержка Elasticsearch ItemReader, используя функции сканирования и прокрутки? Я вижу расширение this, но это основано на обычных поисковых запросах весенних данных. Было бы неплохо иметь один на основе функции сканирования и прокрутки, поскольку пакетное задание в основном должно обрабатывать большую партию данных. Благодарю.Весенний пакет ItemReader для сканирования и прокрутки Elasticsearch
0
A
ответ
0
В то время как для ElasticSearch нет «родной» реализации ItemReader
, Spring Batch предоставляет RepositoryItemReader
, который обертывает данные Spring PagingAndSortingRepository
. При этом вы можете использовать определение репозитория для ElasticSearch, предоставленное проектом Spring Data ElasticSearch.
Подробнее о RepositoryItemReader
в документации весенней партии здесь: http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/data/RepositoryItemReader.html.
Вы можете прочитать больше о проекте Spring Data ElasticSearch здесь: http://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/
0
import java.util.Iterator;
import org.springframework.batch.item.data.AbstractPaginatedDataItemReader;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
public class ElasticsearchItemReader<T> extends AbstractPaginatedDataItemReader<T> {
private ElasticsearchOperations elasticsearchOperations;
private final SearchQuery searchQuery;
private String scrollId;
private int scrollTimeinMillis = 60000;
private Class<T> type;
public ElasticsearchItemReader(
final ElasticsearchOperations elasticsearchOperations,
final SearchQuery searchQuery,
final Class<T> type
) {
this.elasticsearchOperations = elasticsearchOperations;
this.searchQuery = searchQuery;
this.type = type;
}
@Override
protected void doOpen() throws Exception {
scrollId = elasticsearchOperations.scan(searchQuery, scrollTimeinMillis, false);
}
@Override
protected Iterator<T> doPageRead() {
return elasticsearchOperations.scroll(scrollId, scrollTimeinMillis, type).iterator();
}
}
Может быть полезно использовать Cunk-обработка: HTTP: //docs.spring.io/spring-batch/trunk/reference /html/configureStep.html#chunkOrientedProcessing –
Любые люди из Spring имеют какое-то предложение? – heyu