第一步在pom中引入依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.2.4</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.2.4</version>
</dependency>
第二步java客户端相关代码
package com.talkweb.common.es;
import com.talkweb.common.config.properties.ElasticsearchProperties;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.bulk.*;
import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.IndicesAdminClient;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.common.unit.ByteSizeValue;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutionException;
/**
* ES工具
* mengz
*/
public class EsHelper {
private static final Logger logger = LoggerFactory.getLogger(EsHelper.class);
private static IndicesAdminClient adminClient;
private static TransportClient transportClient;
/**
* 获取连接对象
*
* @return
*/
public static TransportClient getClient(ElasticsearchProperties elasticsearchProperties) {
if (null == transportClient) {
logger.info("addr======>" + elasticsearchProperties.getEsHost());
logger.info("port======>" + elasticsearchProperties.getEsPort());
logger.info("indexName======>" + elasticsearchProperties.getEsIndexName());
logger.info("indexType======>" + elasticsearchProperties.getEsIndexType());
logger.info("cluster======>" + elasticsearchProperties.getEsCluster());
Settings settings = Settings.builder().put("cluster.name", elasticsearchProperties.getEsCluster()).build();
try {
transportClient = new PreBuiltTransportClient(settings).
addTransportAddress(new TransportAddress(InetAddress.getByName(elasticsearchProperties.getEsHost()), Integer.valueOf(elasticsearchProperties.getEsPort())));
adminClient = transportClient.admin().indices();
} catch (UnknownHostException e) {
logger.error("获取es连接失败:host:" + elasticsearchProperties.getEsHost() + " port:" + elasticsearchProperties.getEsPort() + " cluster:" + elasticsearchProperties.getEsCluster());
e.printStackTrace();
}
}
return transportClient;
}
/**
* 判断索引是否已经存在
*
* @param index
* @return
*/
public boolean indexExists(String index) {
IndicesExistsRequest request = new IndicesExistsRequest(index);
IndicesExistsResponse response = adminClient.exists(request).actionGet();
if (response.isExists()) {
return true;
}
return false;
}
// 创建索引
public void createIndex(String indexName) {
transportClient.admin().indices().create(new CreateIndexRequest(indexName)).actionGet();
}
/**
* 批量处理器
* 默认情况下BulkProcessor:
* 将bulkActions设置为 1000
* 将bulkSize设置为 5mb
* 不设置flushInterval
* 将concurrentRequests设置为1,这意味着刷新操作的异步执行。
* 将backoffPolicy设置为指数退避,重试次数为8次,启动延迟为50ms。总等待时间约为5.1秒。
*
* @param client
* @return
*/
public static BulkProcessor getBulkProcessor(TransportClient client) {
final BulkProcessor bulkProcessor = BulkProcessor.builder(client, new BulkProcessor.Listener() {
@Override
public void beforeBulk(long executionId, BulkRequest request) {
}
@Override
public void afterBulk(long executionId, BulkRequest request, BulkResponse response) {
}
@Override
public void afterBulk(long executionId, BulkRequest request, Throwable failure) {
}
}).setBulkActions(1000).setBulkSize(new ByteSizeValue(5, ByteSizeUnit.MB))
.setFlushInterval(TimeValue.timeValueSeconds(1L)).setConcurrentRequests(1)
.setBackoffPolicy(BackoffPolicy.exponentialBackoff(TimeValue.timeValueMillis(100), 3)).build();
return bulkProcessor;
}
/**
* 更新索引
*
* @return
* @throws IOException
*/
public UpdateResponse updateIndex(UpdateRequest updateRequest) throws IOException, ExecutionException, InterruptedException {
return transportClient.update(updateRequest).get();
}
/**
* 批量更新
*
* @param updateRequests
*/
public static String bulkUpdate(List<UpdateRequest> updateRequests) {
BulkRequestBuilder bulkRequest = transportClient.prepareBulk()
.setRefreshPolicy(RefreshPolicy.IMMEDIATE);
Iterator bulkResponse = updateRequests.iterator();
while (bulkResponse.hasNext()) {
UpdateRequest updateRequest = (UpdateRequest) bulkResponse.next();
bulkRequest.add(updateRequest);
}
BulkResponse var9 = (BulkResponse) bulkRequest.execute().actionGet();
HashMap var10 = new HashMap();
StringBuilder sb = new StringBuilder();
if