首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-batch ItemReader用于Elasticsearch扫描和滚动

spring-batch ItemReader用于Elasticsearch扫描和滚动
EN

Stack Overflow用户
提问于 2015-05-07 06:53:11
回答 2查看 2.1K关注 0票数 0

在spring-batch中,是否支持使用扫描和滚动功能的Elasticsearch ItemReader?我确实看到了this扩展,但这是基于普通的spring数据搜索查询。有一个基于扫描和滚动功能的将是很好的,因为批处理作业主要需要处理大量的数据。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-05-08 17:15:54

虽然没有针对ElasticSearch的“原生”ItemReader实现,但Spring Batch确实提供了包装Spring Data PagingAndSortingRepositoryRepositoryItemReader。这样,您就可以使用Spring Data ElasticSearch项目提供的ElasticSearch存储库定义。

您可以在Spring批处理文档中阅读更多关于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
EN

Stack Overflow用户

发布于 2017-11-18 03:45:02

代码语言:javascript
复制
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();
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30089051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档