获取下面的错误,而运行 Spring Boot 版本3.0.0应用程序与ElasticSearch.
Caused by: org.elasticsearch.ElasticsearchStatusException:
Elasticsearch exception [type=exception, reason=Content-Type header [application/vnd.elasticsearch+json; compatible-with=7] is not supported]
我尝试将springboot从 2.6.9 升级到 3.0.x,导致ElasticSearch出现上述错误。(在springboot升级之前,ElasticSearch工作正常)
Spring启动升级前使用的版本
- Spring Boot 版本2.6.9
- Spring启动起动器数据ElasticSearch2.6.9
- Spring数据ElasticSearch4.4.0
- ElasticSearch剩余高级客户端7.17.3
- ElasticSearch服务器版本7.9.3
Spring启动升级后使用的版本 - Spring Boot 版本3.0.0
- Spring启动器数据ElasticSearch3.0.0
- Spring数据ElasticSearch5.0.0
- ElasticSearch剩余高级客户端7.17.3
- ElasticSearch服务器版本7.9.3
1条答案
按热度按时间c86crjj01#
我检查了Spring Data Elasticsearch的代码,为什么以及在什么情况下会在5.0.0版本中发送此标头:
1.当使用旧的React式客户端实现时(新的实现使用与新的ElasticsearchClient相同的传输函数)。由于此旧的React式客户端仅与Elasticsearch 7兼容,因此它现在设置此标头。
1.当新的ElasticsearchClient被创建时(这在4.4版和Elasticsearch 7.17或更早的版本中已经是可能的,尽管是可选的)。当现在为新客户端构建传输时,这个头被设置为使用的库的版本。这个传输也被用于新的React式客户端。
您正在引用RestHighLevelClient的一个依赖项,但该代码没有发送此标头,因此您可能是被动的或正在使用新客户端。您的客户端是如何设置的,您使用哪个客户端类?
但是主要的问题是你使用的Elasticsearch服务器版本已经超过两年了(7.9.3版本发布于2020年10月22日),并且不理解这个头文件。使用这个Elasticsearch依赖项的最新Spring Data Elasticsearch版本是4.1,4.2已经是针对7.12.0构建的。