我正在将一个相当旧的应用程序从 Spring Boot 2.0.2 升级到最新的应用程序。
临时目标是更新到最新版本 2 (2.7.18)
所以这可能是一个依赖版本问题,而不是其他任何问题,因为在更新之前它工作完美。
现在,问题是什么?
[type=json_parse_exception, reason=Current token (VALUE_NUMBER_INT) not of boolean type
完全例外
RestStatusException{status=500} org.springframework.data.elasticsearch.RestStatusException: Elasticsearch exception [type=json_parse_exception, reason=Current token (VALUE_NUMBER_INT) not of boolean type
at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@79b99ce2; line: 1, column: 137]]; nested exception is ElasticsearchStatusException[Elasticsearch exception [type=json_parse_exception, reason=Current token (VALUE_NUMBER_INT) not of boolean type
抛出的代码是这样的(简化的):
@Repository
public interface MetadataWithIdRepository extends ElasticsearchRepository<MetadataWithId, String>
(...)
private final MetadataWithIdRepository repository
(...)
repository.count() //throws here
有用的事实:
org.testcontainers.elasticsearch.ElasticsearchContainer
- 版本 1.19.3
docker.elastic.co/elasticsearch/elasticsearch:6.5.1
(我知道它很旧,但它与之前的 Spring Boot 版本运行良好) | spring boot | spring | spring-cloud | boot-data-elastic | elastic-lib | elastic-instance | active mq
old | 2.0.2 | 5.0.6 | Finchley.SR1 | 3.0.7 | 5.6.9 | 6.5.1 |
new | 2.7.18 | 5.3.31 | 2021.0.3 | 4.4.18 | 7.17.15 | 6.5.1 | 5.16.7
GET localhost:56229/_cat/indices
yellow open document-domain FQBoF0knRWa-4CVcgAKWsw 5 1 0 0 1.1kb 1.1kb
GET localhost:56229/document-domain/_search
{
"took": 39,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
实例已启动并正在运行。
我尝试用 10 种不同的方式进行调试,但每次都陷入死胡同。
我能找到的英语互联网上唯一有点类似的提及是this,但这没有帮助
我知道这是一个奇怪的问题,而且我没有可重现的例子,但也许有人看起来类似。如果有任何关于如何处理该问题的提示,我将不胜感激。
弹性库 7.x 不向后兼容弹性服务 6.x
升级服务即可解决问题