前言
想要了解ElasticSearch的朋友可以去:Elastic官网
想了解ElastciSearch7的同学可以去:ElasticSearch7.x新特性
正文
pom.xml引入
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.1.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client-sniffer</artifactId>
<version>7.1.0</version>
</dependency>
初始化
private static RestHighLevelClient client;
private static Sniffer sniffer;
private static int delayMillis = 30000;
public static void init(String host, int port) {
SniffOnFailureListener sniffOnFailureListener = new SniffOnFailureListener();
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(host, port))
.setFailureListener(sniffOnFailureListener);
sniffer = Sniffer.builder(restClientBuilder.build())
.setSniffAfterFailureDelayMillis(delayMillis)
.build();
sniffOnFailureListener.setSniffer(sniffer);
client = new RestHighLevelClient(restClientBuilder);
}
插入数据
public static void bulkRequest(List<String> data) {
BulkRequest request = new BulkRequest();
for (EsDataDTO dt : data) {
IndexRequest indexRequest = new IndexRequest().source(dt);
request.add(indexRequest);
}
client.bulkAsync(request, RequestOptions.DEFAULT, new ActionListener<BulkResponse>() {
@Override
public void onResponse(BulkResponse bulkResponse) {
if (bulkResponse.hasFailures()) {
// 所有操作结果进行迭代
for (BulkItemResponse bulkItemResponse : bulkResponse) {
if (bulkItemResponse.isFailed()) {
BulkItemResponse.Failure failure = bulkItemResponse.getFailure();
logger.error("buld response has item failed {}", failure.toString());
} else {
System.out.println(request.numberOfActions());
}
}
} else { // all success
TimeValue took = bulkResponse.getTook();
logger.info("[批量新增[{}]花费的毫秒]:{},({}),{}", request.numberOfActions(), took, took.getMillis(), took.getSeconds());
}
}
@Override
public void onFailure(Exception e) {
logger.error("bulk request exception {}", e);
}
});
关闭连接
public static void close() {
try {
sniffer.close();
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}