Elasticsearch JAVA API ---Springboot2.x中配置使用(一)


Elasticsearch JAVA API ---Springboot2.x中配置使用(一)


Elasticsearch 會在7.0之後的版本廢棄TransportClient,在8.0之後的版本移除TransportClient (文檔)。因此,使用RestClient來進行相關的操作。

We plan on deprecating the TransportClient in Elasticsearch 7.0 and removing it completely in 8.0. Instead, you should be using the Java High Level REST Client, which executes HTTP requests rather than serialized Java requests. The migration guidedescribes all the steps needed to migrate.

取而代之的是High Level REST Client。

後續的JAVA API使用我們都是使用的High Level REST Client。

完整代碼:https://github.com/qfjiaoyan/elasticsearch-examples

maven配置

新建SpringBoot2.0.3的WEB工程,在MAVEN的pom.xml文件中加入如下依賴

pom文件:

<code> <dependencies>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-web/<artifactid>
/<dependency>
<dependency>
<groupid>org.elasticsearch/<groupid>
<artifactid>elasticsearch/<artifactid>
<version>6.5.0/<version>
/<dependency>
<dependency>
<groupid>org.elasticsearch.client/<groupid>
<artifactid>elasticsearch-rest-high-level-client/<artifactid>
<version>6.5.0/<version>
/<dependency>
<dependency>
<groupid>com.alibaba/<groupid>
<artifactid>fastjson/<artifactid>
<version>1.2.56/<version>
/<dependency>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-test/<artifactid>
<scope>test/<scope>
/<dependency>
/<dependencies>/<code>

配置文件配置

<code>#日誌
logging.path=D:/logs/cache
#es 配置信息
spring.data.elasticsearch.host=192.168.157.140
spring.data.elasticsearch.port=9200
spring.data.elasticsearch.connectTimeOut=1000
spring.data.elasticsearch.socketTimeOut=30000
spring.data.elasticsearch.connectionRequestTimeOut=500
spring.data.elasticsearch.maxConnectNum=100
spring.data.elasticsearch.maxConnectPerRoute=100/<code>

elasticsearch配置類

<code>@Configuration
public class ElasticsearchConfig {
private final static Logger log = LoggerFactory.getLogger(ElasticsearchConfig.class);
private static final String SCHEMA = "http"; // 使用的協議
private ArrayList<httphost> hostList;
@Value("${spring.data.elasticsearch.host}")
private String hosts; // 集群地址,多個用,隔開
@Value("${spring.data.elasticsearch.port}")
private int port; // 集群地址,多個用,隔開
@Value("${spring.data.elasticsearch.connectTimeOut}")
private int connectTimeOut = 1000; // 連接超時時間
@Value("${spring.data.elasticsearch.socketTimeOut}")
private int socketTimeOut = 30000; // 連接超時時間
@Value("${spring.data.elasticsearch.connectionRequestTimeOut}")
private int connectionRequestTimeOut = 500; // 獲取連接的超時時間
@Value("${spring.data.elasticsearch.maxConnectNum}")
private int maxConnectNum = 100; // 最大連接數
@Value("${spring.data.elasticsearch.maxConnectPerRoute}")
private int maxConnectPerRoute = 100; // 最大路由連接數
private RestClientBuilder builder;

@Bean
@ConditionalOnMissingBean(RestHighLevelClient.class)
public RestHighLevelClient client() {
hostList = new ArrayList<>();
String[] hostStrs = hosts.split(",");
for (String host : hostStrs) {
String server = host;
hostList.add(new HttpHost(host, port , SCHEMA));
}
builder = RestClient.builder(hostList.toArray(new HttpHost[0]));
setConnectTimeOutConfig();
setMutiConnectConfig();
RestHighLevelClient client = new RestHighLevelClient(builder);
return client;
}

// 異步httpclient的連接延時配置
public void setConnectTimeOutConfig() {
builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
requestConfigBuilder.setConnectTimeout(connectTimeOut);
requestConfigBuilder.setSocketTimeout(socketTimeOut);
requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
return requestConfigBuilder;
}
});
}

// 異步httpclient的連接數配置
public void setMutiConnectConfig() {
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.setMaxConnTotal(maxConnectNum);
httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);
return httpClientBuilder;
}
});
}

}/<httphost>/<code>

完整代碼

https://github.com/qfjiaoyan/elasticsearch-examples


分享到:


相關文章: