[英]Replacement for searchForStream method in ElasticSearch java api client
我正在根据 Spring Boot 3 的要求将 Java 应用程序从弹性搜索高级客户端迁移到 Java API 客户端,因为它不再支持“org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate”...
我无法找到一种使用流进行搜索的新方法。 这是一个旧的代码片段......
NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder() //
.withQuery(q) //
.withPageable(PageRequest.of(0, 1000)); //
NativeSearchQuery searchQuery = builder.build();
Stream<X> list = elasticsearchTemplate.searchForStream(searchQuery, X.class).stream();
我正在使用 Spring Boot 3、Elastic Search 8.5.3 和 Java Api 8.5.3...
这是gradle依赖...
implementation group: 'co.elastic.clients', name: 'elasticsearch-java', version: "8.5.3"
我花了一段时间才找到,因为我在官方文档中找不到它,但是替换为 deprecated
'org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate'
是
'org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchTemplate'
关于“searchForStream”,现在可以将搜索转换为流...
您还需要将更新的依赖项包含到 gradle/maven 中......
api group: 'org.springframework.data', name: 'spring-data-elasticsearch', version: "5.0.0"
ElasticsearchOperations.searchForStream(Query query, Class<T> clazz)
在 Spring Data Elasticsearch 5.0 中可用,就像在 4.4 中一样。 这根本没有改变。 发生变化的是 Spring Data Elasticsearch 现在使用 Elasticsearch 的新客户端。
发生变化的是您不能使用NativeSearchQueryBuilder
,因为这是为旧客户端创建本机查询。 您现在需要使用NativeQueryBuilder
。
至于您在回答中建议的解决方案:您不能只使用反应式实现来替代现有的命令式实现。
最简单的解决方案是不注入ElasticsearchTemplate
,而是使用ElasticsearchOperations
接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.