SpringBoot中进行elasticSearch查询,使用QueryBuilders构建各类条件查询

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: SpringBoot中进行elasticSearch查询,使用QueryBuilders构建各类条件查询

查询所有

//搜索全部文档
QueryBuilder queryBuilder =
QueryBuilders.matchAllQuery();

查询单个,等于/eq

//单个匹配,搜索name为li的文档
QueryBuilder queryBuilder =
QueryBuilders.matchQuery("name", "li");

查询多个字段匹配某一个值

//搜索name中或nickname中包含有li的文档(必须与li一致)
QueryBuilder queryBuilder =
QueryBuilders.multiMatchQuery("li","name", "nickname");

模糊匹配

//搜索名字中含有li文档(name中只要包含li即可)
WildcardQueryBuilder queryBuilder =
QueryBuilders.wildcardQuery("name","*li*");

BoolQueryBuilder复合查询

BoolQueryBuilder对象使用must方法build,多个and使用多个must

WildcardQueryBuilder queryBuilder1 = QueryBuilders.matchQuery("name", "li");
WildcardQueryBuilder queryBuilder2 = QueryBuilders.matchQuery("id", "1");
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//查询名字是LI和id是1的所有数据
boolQueryBuilder.must(queryBuilder1);
boolQueryBuilder.must(queryBuilder2);

BoolQueryBuilder对象使用should方法build,多个or使用多个should使用

WildcardQueryBuilder queryBuilder1 = QueryBuilders.matchQuery("name", "li");
WildcardQueryBuilder queryBuilder2 = QueryBuilders.matchQuery("id", "1");
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//查询名字是LI或id是1的所有数据
boolQueryBuilder.should(queryBuilder1);
boolQueryBuilder.should(queryBuilder2);
must:必须满足的条件
should:非必须满足的条件
minimumShouldMatch(1):至少要满足一个 should 条件

等值查询

BoolQueryBuilder queryBuilder =
QueryBuilders.boolQuery().must(QueryBuilders.termQuery("name", "小李"));

范围查询

BoolQueryBuilder queryBuilder =
QueryBuilders.rangeQuery("age").gte(18).lte(50);

判空查询

BoolQueryBuilder queryBuilder =
QueryBuilders.boolQuery()
.must(QueryBuilders.existsQuery("name"))
.mustNot(QueryBuilders.existsQuery("tag"));
//查询name有值,tag不存在值

分页查询

SearchResponse response =
this.transportClient
.prepareSearch(index)
.setTypes(type)
.setQuery(queryBuilder)
.setFrom(offset)
.setSize(rows)
.setExplain(false)
.execute()
.actionGet();

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
42 4
|
1月前
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
101 6
|
1月前
|
Java API 数据库
如何使用Spring Boot构建RESTful API,以在线图书管理系统为例
【10月更文挑战第9天】本文介绍了如何使用Spring Boot构建RESTful API,以在线图书管理系统为例,从项目搭建、实体类定义、数据访问层创建、业务逻辑处理到RESTful API的实现,详细展示了每个步骤。通过Spring Boot的简洁配置和强大功能,开发者可以高效地开发出功能完备、易于维护的Web应用。
56 3
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
95 62
|
9天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
39 9
|
9天前
|
Java
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
30 2
|
15天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
33 2
|
18天前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
22 1
|
24天前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
94 6
|
1月前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
172 2