项目版本springboot2.3.12,ES版本7.17,显然版本不匹配导致日志告警
开始选择的客户端为RestHighLevelClient,由于springboot2.3.12里自带的ES版本为7.6.2,所以产生了告警:warnings: [299 Elasticsearch-7.17.12-e3b0c3d3c5c130e1dc6d567d6baef1c73eeb2059 "[ignore_throttled] parameter is deprecated because frozen indices have been deprecated. Consider cold or frozen tiers in place of frozen indices."]
也尝试过将springboot升级到与7.17匹配的版本2.7.0.中间产生了一系列问题。最后放弃了
最后放弃使用RestHighLevelClient改用ElasticsearchClient
需要引入的pom.xml:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.17.3</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.json</artifactId>
<version>2.0.1</version>
</dependency>
获取ElasticsearchClient代码如下:
public ElasticsearchClient getEsClient() {
RestClientBuilder build = RestClient.builder(new HttpHost(esUrl,9200,"http"));
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(esUserName,esPassword));
RestClient restClient = build.setHttpClientConfigCallback((HttpAsyncClientBuilder httpAsyncClientBuilder) -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider)).build();
ElasticsearchTransport transport = new RestClientTransport(restClient,new JacksonJsonpMapper());
return new ElasticsearchClient(transport);
}
运行的时候报错nested exception is java.lang.NoClassDefFoundError:com/fasterxml/jackson/core/util/JsonProvider
最后解决办法:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.json</artifactId>
<version>2.0.1</version>
</dependency>
最后成功获取到了ElasticsearchClient,也没有再产生告警。