原标题:Spring认证中国教育管理中心-Spring Data Elasticsearch教程三(Spring中国教育管理中心)
7.5搜索结果类型
当使用接口的方法检索文档时DocumentOperations,只会返回找到的实体。使用接口的方法进行搜索时SearchOperations,每个实体都可以获得附加信息,例如找到的实体的分数或sortValues。
为了返回此信息,每个实体都包装在一个SearchHit对象中,该对象包含此实体特定的附加信息。这些SearchHit对象本身在一个SearchHits对象中返回,该对象还包含有关整个搜索的信息,例如maxScore或请求的聚合。现在可以使用以下类和接口:
搜索命中<T>
包含以下信息:
- ID
- 分数
- 排序值
- 突出显示字段
- SearchHits内部命中(这是一个包含最终返回的内部命中的嵌入对象)
- 检索到的 <T> 类型实体
搜索点击<T>
包含以下信息:
- 总点击数
- 总点击量关系
- 最高分
- SearchHit<T>对象列表
- 返回的聚合
- 返回的建议结果
搜索页面<T>
定义一个 Spring DataPage包含一个SearchHits<T>元素,并且可以用于使用存储库方法进行分页访问。
SearchScrollHits<T>
由 中的低级滚动 API 函数返回,它使用 Elasticsearch 滚动
idElasticsearchRestTemplate丰富了 a 。SearchHits<T>
SearchHitsIterator<T>
接口的流函数返回的迭代器SearchOperations。
7.6.查询
SearchOperations和ReactiveSearchOperations接口中定义的几乎所有方法都带有一个Query参数,该参数定义要执行的查询以进行搜索。Query是一个接口,Spring Data Elasticsearch 提供了三种实现CriteriaQuery:StringQuery和NativeSearchQuery。
7.6.1.条件查询
CriteriaQuery基于查询允许创建查询以搜索数据,而无需了解 Elasticsearch 查询的语法或基础知识。Criteria它们允许用户通过简单地链接和组合指定搜索文档必须满足的条件的对象来构建查询。
在谈论 AND 或 OR 组合条件时请记住,在 Elasticsearch 中 AND 被转换为必须条件,而 OR被转换为应该
Criteria并且它们的用法最好通过示例来解释(假设我们有一个Book具有属性的实体price):
示例 69. 获取给定价格的书籍
Criteria criteria = new Criteria("price").is(42.0);
Query query = new CriteriaQuery(criteria);
可以链接相同字段的条件,它们将与逻辑 AND 组合:
示例 70. 获取给定价格的书籍
Criteria criteria = new Criteria("price").greaterThan(42.0).lessThan(34.0L);
Query query =