We can index bulk data into elastic using RestHighLevelClient
Maven dependencies:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${elastic.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${elastic.version}</version>
</dependency>
Configuration :
@Bean
protected RestHighLevelClient createInstance() throws Exception
{
try
{
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", "9200", "http")));
}
catch (Exception e)
{
LOG.error("Error while creating RestHighLevelClient", e);
}
return restHighLevelClient;
}
Usage :
@Autowired
private RestHighLevelClient restHighLevelClient;
@Override
public void storeBulkDataInElastic(List<UserBean> dataBeanList) throws IOException
{
BulkRequest bulkRequest = new BulkRequest();
ObjectMapper objectMapper = new ObjectMapper();
dataBeanList.forEach(data -> {
IndexRequest indexRequest = new IndexRequest("ElasticIndex", "ElasticType", "ElasticId").source(objectMapper.convertValue(data, Map.class));
bulkRequest.add(indexRequest);
});
restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
}