2015-05-06 3 views
0

В Spring-batch есть ли поддержка Elasticsearch ItemReader, используя функции сканирования и прокрутки? Я вижу расширение this, но это основано на обычных поисковых запросах весенних данных. Было бы неплохо иметь один на основе функции сканирования и прокрутки, поскольку пакетное задание в основном должно обрабатывать большую партию данных. Благодарю.Весенний пакет ItemReader для сканирования и прокрутки Elasticsearch

+0

Может быть полезно использовать Cunk-обработка: HTTP: //docs.spring.io/spring-batch/trunk/reference /html/configureStep.html#chunkOrientedProcessing –

+0

Любые люди из Spring имеют какое-то предложение? – heyu

ответ

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(); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^