引入依赖
java
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.15.2</version>
<exclusions>
<!-- 排除自带的logback依赖 -->
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.15.2</version>
<exclusions>
<!-- 排除自带的logback依赖 -->
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
编写配置类(可配置多数据源)
java
#Es地址
es.hostName=localhost
#Es端口号
es.transport=9200
#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群
es.cluster.name=elasticsearch_content_aware
#es 访问协议
es.protocol=http
#连接超时时间
es.connectTimeOut = 1000
#socket连接超时时间
es.socketTimeOut = 30000
#获取连接超时时间
es.connectionRequestTimeOut = 500
#最大连接数
es.maxConnectNum = 100
#最大路由连接数
es.maxConnectPerRoute = 100
package com.pys.config;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class EsConfiguration {
//集群地址,多个使用','隔开
@Value("${es.hostName}")
private String host;
//端口号
@Value("${es.transport}")
private int port;
//使用的协议
@Value("${es.protocol}")
private String schema;
// private static ArrayList<HttpHost> hostList = null;
//连接超时时间
@Value("${es.connectTimeOut}")
private int connectTimeOut;
//socket连接超时时间
@Value("${es.socketTimeOut}")
private int socketTimeOut;
//获取连接超时时间
@Value("${es.connectionRequestTimeOut}")
private int connectionRequestTimeOut;
//最大连接数
@Value("${es.maxConnectNum}")
private int maxConnectNum;
//最大路由连接数
@Value("${es.maxConnectPerRoute}")
private int maxConnectPerRoute;
@Bean
public RestHighLevelClient clien() {
RestClientBuilder builder = RestClient.builder(new HttpHost(host, port, schema));
//异步httpclient连接延时配置
builder.setRequestConfigCallback((requestConfigBuilder) -> {
requestConfigBuilder.setConnectTimeout(connectTimeOut);
requestConfigBuilder.setSocketTimeout(socketTimeOut);
requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
return requestConfigBuilder;
});
//异步httpClient连接数配置
builder.setHttpClientConfigCallback((httpClientBuidler) -> {
httpClientBuidler.setMaxConnTotal(maxConnectNum);
httpClientBuidler.setMaxConnPerRoute(maxConnectPerRoute);
return httpClientBuidler;
});
RestHighLevelClient client = new RestHighLevelClient(builder);
return client;
}
}
基础查询
java
数据新增
public boolean add(String indexName, String id, Object object) {
IndexRequest indexRequest = new IndexRequest(indexName, "_doc", id);
indexRequest.source(JSONObject.toJSONString(object), XContentType.JSON);
try {
IndexResponse indexResponse = restHighLevelClient
.index(indexRequest, RequestOptions.DEFAULT);
System.out.println("indexResponse:{}"+JSONObject.toJSONString(indexResponse));
return StringUtils.equalsIgnoreCase("created", indexResponse.getResult().toString());
} catch (IOException e) {
System.out.println("添加es数据失败 indexName:{},e:{}"+indexName +" "+ e);
}
return false;
}
数据删除
public boolean delete(String indexName, String id) {
DeleteRequest deleteRequest = new DeleteRequest(indexName, id);
try {
DeleteResponse response = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
return StringUtils.equalsIgnoreCase("deleted", response.getResult().toString());
} catch (IOException e) {
log.error("根据ID删除es数据失败 indexName:{},e:{}", indexName, e);
}
return false;
}
数据查询
public GetResponse get(String indexName, String id) {
GetRequest getRequest = new GetRequest(indexName, id);
try {
GetResponse response = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
return response;
} catch (IOException e) {
log.error("根据ID获取es数据失败 indexName:{},e:{}", indexName, e);
}
return null;
}
数据更新
public boolean update(String indexName, Object object, String id) {
UpdateRequest updateRequest = new UpdateRequest(indexName, id);
updateRequest.doc(JSONObject.toJSONString(object), XContentType.JSON);
try {
UpdateResponse response = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
return StringUtils.equalsIgnoreCase("updated", response.getResult().toString());
} catch (IOException e) {
log.error("根据Id更新es数据失败 indexName:{},e:{}", indexName, e);
}
return false;
}