Files
spring-batch-extensions/spring-batch-elasticsearch
dependabot[bot] 3af63f04ca Bump org.springframework.batch:spring-batch-core (#149)
Bumps [org.springframework.batch:spring-batch-core](https://github.com/spring-projects/spring-batch) from 3.0.1.RELEASE to 3.0.10.RELEASE.
- [Release notes](https://github.com/spring-projects/spring-batch/releases)
- [Commits](https://github.com/spring-projects/spring-batch/compare/3.0.1.RELEASE...3.0.10.RELEASE)

---
updated-dependencies:
- dependency-name: org.springframework.batch:spring-batch-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 00:57:51 +01:00
..
2019-03-25 14:55:22 +01:00
2014-07-11 16:00:16 +07:00

spring-batch-elasticsearch


ItemReader and ItemWriter implementations for Elasticsearch

To index documents


Create a class and define the index name and type

@Document(indexName="some_index", type="some_type")
public class SomeClass {
   // field(s) with getter(s) and setter(s)
}

Create an item processor

public class SampleItemProcess implements ItemProcessor<Object, IndexQuery> {
 
   @Override
   public IndexQuery process(Object item) throws Exception {
             
      SomeClass someClass = new SomeClass();
      // populate someClass from item (Object)
             
      IndexQueryBuilder builder = new IndexQueryBuilder();
      builder.withObject(someClass);
     // use other methods on builder as required
             
     return builder.build();
  }
}

Configuration for reader/writer


@Configuration
public class ReaderWriterConfig {

	@Bean
	public ElasticsearchItemReader<SomeInputClass> elasticsearchItemReader() {
	     
	    return new ElasticsearchItemReader<>(elasticsearchOperations(), query(), SomeInputClass.class);
	}
	
	@Bean
	public ElasticsearchItemWriter elasticsearchItemWriter() {
	     
	    return new ElasticsearchItemWriter(elasticsearchOperations());
	}
	 
	@Bean
	public SearchQuery query() {
	     
	    NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
	    // create query as required using the methods on the builder object
	     
	    return builder.build();
	}
	 
	@Bean
	public ElasticsearchOperations elasticsearchOperations() {
	    // configure and return elastic search template 
	}
}
NOTE

The Pageable object from the Query object will be used for paged requests. Setting the page and pageSize fields (inherited from AbstractPaginatedDataItemReader) will have no effect.