如何在HighLevelClient中移除ignore_throttled参数?Spring Boot ES适配
解决Elasticsearch 6.2.2与HighLevelClient 7.x的ignore_throttled参数冲突问题
方法一:手动移除ignore_throttled参数(无需降级客户端)
7.x版本的HighLevelClient会自动向SearchRequest中添加ignore_throttled参数,但ES 6.2.2不支持该参数,可通过以下两种方式移除:
方式1:通过SearchSourceBuilder显式设置参数为null
在构建SearchSourceBuilder时,调用setIgnoreThrottled方法并传入null,客户端将不会在请求中携带该参数:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery()); // 显式设置ignore_throttled为null,避免客户端自动添加该参数 sourceBuilder.setIgnoreThrottled(null); searchRequest.source(sourceBuilder);
方式2:修改请求JSON内容(若方式1无效)
如果方式1不生效,可将SearchRequest转换为JSON字符串后移除ignore_throttled字段,再重新构建请求:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery()); searchRequest.source(sourceBuilder); // 将请求转换为JSON XContentBuilder builder = XContentFactory.jsonBuilder(); searchRequest.source().toXContent(builder, ToXContent.EMPTY_PARAMS); String json = Strings.toString(builder); // 移除ignore_throttled字段 json = json.replace(",\"ignore_throttled\":true", ""); // 重新设置回SearchRequest searchRequest.source(SearchSourceBuilder.fromXContent(XContentFactory.jsonBuilder().json(json)));
方法二:对齐客户端与ES服务器版本(解决依赖冲突)
你当前使用的spring-boot-starter-data-elasticsearch:2.1.10.RELEASE默认依赖的Elasticsearch客户端版本可能与6.2.2不一致,导致降级时出现未知错误,可通过强制指定版本解决:
1. Gradle中强制指定客户端版本
修改依赖配置,明确指定Elasticsearch客户端版本与服务器一致:
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch:2.1.10.RELEASE' // 强制锁定Elasticsearch客户端及核心包版本为6.2.2 implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.2.2' implementation 'org.elasticsearch:elasticsearch:6.2.2'
2. 排除Starter中默认的高版本依赖
若存在依赖冲突,需排除Starter自带的高版本ES组件:
implementation('org.springframework.boot:spring-boot-starter-data-elasticsearch:2.1.10.RELEASE') { exclude group: 'org.elasticsearch.client', module: 'elasticsearch-rest-high-level-client' exclude group: 'org.elasticsearch', module: 'elasticsearch' } implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.2.2' implementation 'org.elasticsearch:elasticsearch:6.2.2'
3. 检查依赖树
执行gradle dependencies命令查看依赖树,确保所有Elasticsearch相关依赖版本均为6.2.2,无混合版本情况。
内容的提问来源于stack exchange,提问作者user19500494
相关产品推荐
相关产品推荐

