package eu.dnetlib.ariadneplus.elasticsearch; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import javax.annotation.PostConstruct; import eu.dnetlib.ariadneplus.elasticsearch.model.AgentInfo; import eu.dnetlib.ariadneplus.elasticsearch.model.AriadneCatalogEntry; import eu.dnetlib.ariadneplus.reader.ResourceManager; import org.apache.http.HttpHost; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service public class BulkUpload { @Value("${elasticsearch.url:localhost:9200}") private String elasticsearchUrl; private RestHighLevelClient client; @PostConstruct public void init() throws IOException { client = new RestHighLevelClient( RestClient.builder( new HttpHost("elastic-test.ariadne.d4science.org",9200,"http"))); } public void index(ResourceManager manager) { BulkRequest request = new BulkRequest(); while (manager.hasNext()){ try { Object next = manager.next(); AriadneCatalogEntry ace = ((AriadneCatalogEntry) next); AgentInfo testPublisher = new AgentInfo(); testPublisher.setName("TEST"); ace.getPublisher().add(testPublisher); String[] splits = ace.getIdentifier().split("/"); request.add(new IndexRequest("catalog_test").id(splits[splits.length-1]) .source(ace.toJson(),XContentType.JSON)); System.out.println("indexing to ES record "+ace.toJson()); BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT); System.out.println("indexing to ES record completed "+bulkResponse.status()); if (bulkResponse.hasFailures()) { System.out.println("FailureMessage: "+bulkResponse.buildFailureMessage()); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }