首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在spring data ElasticSearch4.0中将SearchHits<T>返回类型转换为Page<T>返回类型

在Spring Data Elasticsearch 4.0中,可以通过以下步骤将SearchHits<T>返回类型转换为Page<T>返回类型:

  1. 首先,确保你已经在项目中添加了Spring Data Elasticsearch的依赖。可以在项目的pom.xml文件中添加以下依赖:
代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
  1. 创建一个自定义的ElasticsearchRepository接口,该接口继承自ElasticsearchRepository,并指定泛型参数为你的实体类和实体类的主键类型。例如:
代码语言:txt
复制
public interface MyElasticsearchRepository extends ElasticsearchRepository<MyEntity, Long> {
    // 自定义查询方法
}
  1. 在你的自定义ElasticsearchRepository接口中,可以使用ElasticsearchOperations的search方法执行查询,并将返回的SearchHits<T>对象转换为Page<T>对象。例如:
代码语言:txt
复制
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.SearchHits;

public class MyElasticsearchRepositoryImpl implements MyElasticsearchRepository {

    private final ElasticsearchOperations elasticsearchOperations;

    public MyElasticsearchRepositoryImpl(ElasticsearchOperations elasticsearchOperations) {
        this.elasticsearchOperations = elasticsearchOperations;
    }

    @Override
    public Page<MyEntity> searchEntities(String keyword, Pageable pageable) {
        SearchHits<MyEntity> searchHits = elasticsearchOperations.search(
                new NativeSearchQueryBuilder()
                        .withQuery(QueryBuilders.matchQuery("fieldName", keyword))
                        .withPageable(pageable)
                        .build(),
                MyEntity.class
        );

        List<MyEntity> entities = searchHits.stream()
                .map(SearchHit::getContent)
                .collect(Collectors.toList());

        return new PageImpl<>(entities, pageable, searchHits.getTotalHits());
    }
}

在上述示例中,我们通过ElasticsearchOperations的search方法执行了一个查询,并使用Stream API将SearchHits<T>对象转换为List<T>对象。然后,我们使用PageImpl类创建了一个Page<T>对象,并将转换后的List<T>对象、Pageable对象和总命中数作为参数传递给PageImpl的构造函数。

  1. 最后,在你的应用程序中使用自定义的ElasticsearchRepository接口进行查询。例如:
代码语言:txt
复制
@Autowired
private MyElasticsearchRepository myElasticsearchRepository;

public Page<MyEntity> searchEntities(String keyword, Pageable pageable) {
    return myElasticsearchRepository.searchEntities(keyword, pageable);
}

在上述示例中,我们通过@Autowired注解将自定义的ElasticsearchRepository接口注入到应用程序中,并使用该接口的searchEntities方法执行查询。

这样,你就可以在Spring Data Elasticsearch 4.0中将SearchHits<T>返回类型转换为Page<T>返回类型了。请注意,以上示例中的代码仅供参考,你需要根据自己的实际情况进行调整和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微服务 day11:基于 ElasticSearch 构建搜索服务

使用JAVA 客户端实现: 创建搜索请求对象 指定类型(部分版本不需要指定类型,这里以 6.2.1 为例) 构建搜索源对象 配置搜索方式,设置需要过滤字段 向搜索请求中设置搜索源...3、由于设置了 operator 为 or,只要有一个词匹配成功则就返回该文档。...(sourceAsMap); } } 9、排序 可以在字段上添加一个或多个排序,支持在 keyword、date、float 等类型上添加,text 类型的字段上不允许添加排序。...一个搜索请求过来,会分别从各各分片去查询,最后将查询到的数据合并返回给用户。...=true, data=true:即是主结点又是数据结点 master=false, data=true:仅是数据结点 master=true, data=false:仅是主结点,不存储数据 master

2.1K20

C#笔记2 —常量

world"; // hello world string d = @"hello \t world"; // hello \t world...定义一个常量的语法如下: const = value; 下面的代码演示了如何在程序中定义和使用常量: 实例 using System; public...["page"]),但是如果page这个参数在url中不存在,那么前者将返回0,0可能是一个有效的值,所以你不知道url中原来根本就没有这个参数而继续进行下一下的处理,这就可能产生意想不到的效果,而用后一种办法的话没有...Convert.ToInt32(double value) 如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5换为4,4.5 转换为 4,而 5.5 转换为 6。...不过4.6可以转换为5,4.4转换为4 b. int.Parse("4.5") 直接报错:"输入字符串的格式不正确". c. int(4.6) = 4 Int转化其他数值类型为Int时没有四舍五入,强制转换

1.3K20

上新了Spring,全新一代类型转换机制

职责不单一:该接口有非常多的方法,但只用到2个而已 类型不安全:setValue()方法入参是Object,getValue()返回值是Object,依赖于约定好的类型,不安全 线程不安全:依赖于setValue...:Source -> Target类型转换接口,适用于1:1换 ConverterFactory:Source -> R类型转换接口,适用于1:N转换 GenericConverter...这套接口,解决了PropertyEditor做类型转换存在的所有缺陷,且具有非常高的灵活性和可扩展性。下面进入详细了解。 Converter 将源类型S转换为目标类型T。...适合1:1换场景:可以将任意类型换为 任意类型。...对于专用的转换器Converter,它已明确规定了转换的类型,自然就不需要做前置判断喽。 ✍总结 本文详细介绍了Spring新一代的类型转换接口,类型转换作为Spring的基石,其重要性可见一斑。

86420

ElasticSearch全文搜索引擎 -Spring Boot操作ES(SpringData概述、Spring Data Elasticsearch、基本操作、ElasticSearch操作文档)

Spring Data概述 2. Spring Data Elasticsearch 3. 实现基本操作 4. ElasticSearch操作文档 5....Spring Data概述 Spring Dataspring提供的一套连接各种第三方数据源的框架集,它支持连接很多第三方数据源,例如: 数据库 redis ElasticSearch MongoDB...Spring Data Elasticsearch 上面章节介绍了Spring Data可以连接很多第三方数据源,其中ES就是Spring Data可以连接的对象。...Spring Data支持编写方法名表达操作,会自动按方法名的表达生成实现代码,这是它的一大优势!...=1; int pageSize=2; //PageRequest.of返回Pageable,Pageable页数从第0页开始 Page page=itemRepository.queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc

2K20

Spring Boot 整合 ElasticSearch 这么简单?

spring-data-elasticsearch 中 Operations 和 Repository 相关技术的使用。...如何在 Spring Boot 项目中引入 spring-data-elasticsearch。 ElasticSearch的使用场景和相关技术 搜索功能不仅在互联网项目中需要,在企业级项目中也需要。...搜索结果类型 ElasticSearch 搜索 API 在返回搜索数据的同时也会返回搜索产生的额外信息,比如匹配到的总数量、排序字段值、高亮显示等,这些伴随着搜索的额外信息就被放置在 spring-data-elasticsearch...本节将介绍 spring-data-elasticsearch 搜索结果的包装类。...该类型为接口类型spring-data-elasticsearch 提供了 3 个实现类,分别是: CriteriaQuery StringQuery NativeSearchQuery。

1.5K30

【Elasticsearch】黑马旅游案例

因此,我们在cn.itcast.hotel.pojo中定义返回结果: package cn.itcast.hotel.pojo; ​ import lombok.Data; ​ import java.util.List...return 酒店文档列表 */ PageResult search(RequestParams params); 2)实现搜索业务,肯定离不开RestHighLevelClient,我们需要把它注册到Spring...searchHits = response.getHits();    // 4.1.获取总条数    long total = searchHits.getTotalHits().value;...在之前的业务中,只有match查询,根据关键字搜索,现在要添加条件过滤,包括: 品牌过滤:是keyword类型,用term查询 星级过滤:是keyword类型,用term查询 价格过滤:是数值类型...; ​ @Data public class RequestParams {    private String key;    private Integer page;    private

24230

上新了Spring,全新一代类型转换机制

职责不单一:该接口有非常多的方法,但只用到2个而已 类型不安全:setValue()方法入参是Object,getValue()返回值是Object,依赖于约定好的类型,不安全 线程不安全:依赖于setValue...:Source -> Target类型转换接口,适用于1:1换 ConverterFactory:Source -> R类型转换接口,适用于1:N转换 GenericConverter...这套接口,解决了PropertyEditor做类型转换存在的所有缺陷,且具有非常高的灵活性和可扩展性。下面进入详细了解。 Converter 将源类型S转换为目标类型T。...适合1:1换场景:可以将任意类型换为 任意类型。...对于专用的转换器Converter,它已明确规定了转换的类型,自然就不需要做前置判断喽。 ✍总结 本文详细介绍了Spring新一代的类型转换接口,类型转换作为Spring的基石,其重要性可见一斑。

1.2K30
领券