Fel*_*ley 4 java spring spring-data-elasticsearch
我目前正在从 spring data elastic search 3.2.X 迁移到 4.0.0。
我一直依赖于通过原始 SearchResponse 类获取内部命中结果,方法是利用现已弃用的低级函数org.springframework.data.elasticsearch.core.ElasticsearchOperations.query(SearchQuery query, ResultsExtractor resultsExtractor);
基本上我所做的是创建自定义 resultExtractor ,它将公开低级别的 SearchResponse ,以便我可以提取内部命中结果。
现在,在 4.0.0 版本中,该功能已不再存在,ElasticSearchOperations 和 ElasticSearchRestTemplate 都使用名为 SearchHits 的新结果类,据我所知,该类不存储内部点击信息。
除了直接使用restHighLevelClient(这当然是不可取的,因为我会丢失对象映射和其他东西)之外,我能想到的解决方法是扩展ElasticSearchRestTemplate并基本上创建新的搜索实现(查询查询、Class clazz、IndexCooperatives索引),其中将返回 SearchHits 和原始搜索响应(类似于我的自定义 ResultExtractor 用来执行的操作)。
之后,由于所有返回页面实例的 api 已被弃用,我现在必须依赖SearchHitSupport.searchPageFor(SearchHits searchHits, @Nullable Pageable pageable)来获取通常的分页功能。
我觉得这不是非常简单和干净的解决方案,而且感觉更像是一种解决方法。在 4.0.0 版本中是否有更直接的方法来获取 innerHitsResult 并将结果内容映射到页面?
关于inner_hits有一个悬而未决的问题。返回inner_hits应该在类中完成SearchHit<T>,而不是通过暴露内部Elasticsearch数据来完成。
至于分页:当您有一个SearchHits<T>对象作为使用 a 的查询结果时Pageable,您可以调用
SearchHits<Entity> searchHits = operations.search(query, Entity.class);
SearchPage<Entity> page = SearchHitSupport.searchPageFor(searchHits, query.getPageable)
Run Code Online (Sandbox Code Playgroud)
SearchPage实现Page接口。
编辑:
该问题已修复,从下一个版本(4.1)开始返回内部命中。
| 归档时间: |
|
| 查看次数: |
6084 次 |
| 最近记录: |