springboot整合elasticsearch8组合条件查询

这篇具有很好参考价值的文章主要介绍了springboot整合elasticsearch8组合条件查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

整合过程见上一篇文章
springboot整合elasticsearch8文章来源地址https://www.toymoban.com/news/detail-598235.html

1.es8多条件组合查询
@Slf4j
@RestController
@RequestMapping("/elastic")
public class ElasticSearchTestController {

    @Autowired
    private ElasticsearchClient client;
    
     @GetMapping("/user")
    public List getUser() throws IOException {

        List<User> userList = new ArrayList<>();
        String name = "张三";

        // 构建查询条件
        List<Query> queryList = new ArrayList<>();
        
        // MatchPhraseQuery
        Query byName = MatchPhraseQuery.of(m -> m
                .field("name")
                .query(name)
        )._toQuery();

        // RangeQuery
        Query byAge1 = RangeQuery.of(r -> r
                .field("age")
                .gte(JsonData.of(10))
        )._toQuery();

        Query byAge2 = RangeQuery.of(r -> r
                .field("age")
                .lte(JsonData.of(13))
        )._toQuery();

        // TermsQuery
        List<FieldValue> ls = new ArrayList<>();
        ls.add(FieldValue.of("男"));
        ls.add(FieldValue.of("女"));
        Query termsQuery = TermsQuery.of(t ->t.field("sex").terms(terms ->terms.value(ls)))._toQuery();

        queryList.add(byName);
        queryList.add(byAge1);
        queryList.add(byAge2);
        queryList.add(termsQuery);

        String[] sources = new String[]{"name", "age"};

        SearchResponse<User> response = client.search(s -> s
                        .index("user").query(q -> q.bool(b -> b.must(queryList)))
                        .sort(sort -> sort.field(f -> f.field("age").order(SortOrder.Asc)))     //排序
                        .source(sc -> sc                                                        //查询字段过滤
                                .filter(f -> f
                                        .includes(Arrays.asList(sources))
                                )
                        )
                        .from(0)                                                                 //分页
                        .size(10),                                            
                User.class
        );

        List<Hit<User>> hits = response.hits().hits();
        for (Hit<User> hit: hits) {
            userList.add(hit.source());
        }
        return  userList;
    }
}
2.使用scroll进行大数据量查询
 		...
		// 第一次查询
		SearchResponse<User> response = client.search(s -> s
                        .index("user")
                        .query(q -> q.bool(b -> b.must(queryList)))                                                             
                        .size(5000)
                        .scroll(t ->t.time("5m")),                                               //开启scroll
                User.class
        );

        List<Hit<User>> hits = response.hits().hits();
        for (Hit<User> hit: hits) {
            userList.add(hit.source());
        }
        String scrollId = response.scrollId();
        List<String> strings = new ArrayList<>();
        strings.add(scrollId);
        ScrollResponse<User> search = null;

        do {
            String scrollIdTemp = scrollId;
            log.info(scrollIdTemp);
            search = client.scroll(s->s.scrollId(scrollIdTemp).scroll(t->t.time("5m")),User.class);
            for (Hit<User> hit : search.hits().hits()) {
                userList.add(hit.source());
            }
            scrollId = search.scrollId();
            strings.add(scrollId);
        }while(!search.hits().hits().isEmpty());
        // 清除scrollId
        client.clearScroll(c->c.scrollId(strings));
        ...      

到了这里,关于springboot整合elasticsearch8组合条件查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch8 - SpringBoot整合ElasticSearch

    springboot 整合 ES 有两种方案,ES 官方提供的 Elasticsearch Java API Client 和 spring 提供的 [Spring Data Elasticsearch](Spring Data Elasticsearch) 两种方案各有优劣 Spring:高度封装,用着舒服。缺点是更新不及时,有可能无法使用 ES 的新 API ES 官方:更新及时,灵活,缺点是太灵活了,基本是一

    2024年03月25日
    浏览(97)
  • springboot整合elasticsearch8

    1.引入maven依赖 2.application.yml添加配置 3.编写config文件 启动demo项目,通过控制台日志查看是否能够正常连接es。 4.在DemoApplicationTests编写简单测试操作es。

    2024年02月12日
    浏览(48)
  • springBoot整合ElasticSearch8.x版本

    导入依赖   dependency         groupIdcom.fasterxml.jackson.core/groupId         artifactIdjackson-databind/artifactId         version2.13.2/version   /dependency     dependency         groupIdorg.glassfish/groupId         artifactIdjakarta.json/artifactId         version2.0.1/version   /dependency           dependency  

    2023年04月21日
    浏览(43)
  • SpringBoot3.0 整合 ElasticSearch8.5.0 及使用

    这两个版本都是目前较新的版本,本文选用的依赖是 spring-boot-starter-data-elasticsearch:3.0 ,这个新版本也是改用了es的 elasticsearch-java API,全面推荐使用Lambda语法;另外SpringData本身推出了 Repository 功能(有些类似Mybatis-Plus)的功能,也支持注解简化开发。 Docker 快速部署 单机 ela

    2024年02月11日
    浏览(65)
  • elasticsearch8和kibana部署以及与springboot整合遇到的坑

    我本来使用的是最新版本的es 8.6.2。但是由于ik分词器只更新到8.6.1,所以就更改为部署8.6.1。在过程中遇到一些问题,这里做一个总结 环境:windows10 elasticsearch版本:8.6.1 一、修改es 用户密码的方式 二、kibana 使用用户名和密码登录 修改kibana.yml 文件 启动kibana一直闪退 解决方

    2024年02月02日
    浏览(44)
  • SpringBoot3整合Elasticsearch8.x之全面保姆级教程

    安装配置 ES : https://blog.csdn.net/qq_50864152/article/details/136724528 安装配置 Kibana : https://blog.csdn.net/qq_50864152/article/details/136727707 新建项目:新建名为 web 的 SpringBoot3 项目 公共配置 介绍:一个开源的高扩展的分布式全文检索引擎,可以近乎实时的存储 和检索数据 依赖: web 模块

    2024年04月13日
    浏览(52)
  • Springboot3.1+Elasticsearch8.x匹配查询

    springboot-starter3.1.0中spring-data-elasticsearch的版本为5.1.0,之前很多方法和类都找不到了。这里主要讲讲在5.1.0版本下如何使用spring data对elesticsearch8.x进行匹配查询。 第一步当然是配置依赖 在这里面,spring-boot-starter-data-elasticsearch是3.1.0的,里面的spring-data-elasticsearch是5.1.0的,服务

    2024年02月15日
    浏览(46)
  • springboot3整合elasticsearch8.7.0实现为bean对象创建索引添加映射

    目录 准备工作 添加相关依赖 在yml中配置elasticsearch 主要内容 实体类 ElasticSearch配置类 测试 确认当前没有counter索引 启动spring 再次查询counter索引​ 在测试类中输出counter索引的映射 官方文档 要注意版本对应关系 spring官方文档中有版本对照表 目前我使用的都是最新的版本,

    2024年02月03日
    浏览(63)
  • 关于springboot整合elasticsearch8.4.3的找不到相关类JsonProvider、JsonProvider的解决方案

    环境是springboot是2.3.7,elasticsearch是8.4.3 关于8.4.3的官方文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/8.4/installation.html 创建ElasticsearchClient 对象: 一开始报错ClassNotFoundException: jakarta.json.spi.JsonProvider,然后看了下官方文档修改了下jakarta.json-api的版本.解决完成之后

    2024年02月02日
    浏览(61)
  • Elasticsearch8.8.0 SpringBoot实战操作各种案例(索引操作、聚合、复杂查询、嵌套等)

    Elasticsearch8.8.0 全网最新版教程 从入门到精通 通俗易懂 引入依赖 添加配置文件 application.yaml 导入ca证书到项目中 从任意一个es容器中,拷贝证书到resources目录下 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EXytUrDp-1691330960034)(media/16912196423122/16

    2024年02月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包