BoolQueryBuilder 如何进行模糊查询 并且模糊过滤去除name为Ab的 【4月更文挑战第2天】

简介: 如果你想使用 BoolQueryBuilder 进行模糊查询,并且要排除那些 name 字段为特定值(如 "Ab")的文档,你可以使用 must_not 子句与 FuzzyQueryBuilder 和 TermQueryBuilder 组合。以下是如何在 Elasticsearch 中实现这一需求的示例:Java代码实现假设你想对字段 description 进行模糊查询,并确保排除 name 字段为 "Ab" 的文档:javaCopy codeimport org.elasticsearch.index.query.BoolQueryBuilder;import org.e

如果你想使用 BoolQueryBuilder 进行模糊查询,并且要排除那些 name 字段为特定值(如 "Ab")的文档,你可以使用 must_not 子句与 FuzzyQueryBuilder 和 TermQueryBuilder 组合。以下是如何在 Elasticsearch 中实现这一需求的示例:

Java代码实现
假设你想对字段 description 进行模糊查询,并确保排除 name 字段为 "Ab" 的文档:

java

Copy code
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;

// 创建 BoolQueryBuilder
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();

// 添加模糊查询
FuzzyQueryBuilder fuzzyQuery = QueryBuilders.fuzzyQuery("description", "searchTerm")
.fuzziness(Fuzziness.AUTO); // 自动设置模糊度
boolQuery.must(fuzzyQuery);

// 添加模糊排除过滤
TermQueryBuilder termQuery = QueryBuilders.termQuery("name.keyword", "Ab");
boolQuery.mustNot(termQuery); // 使用 mustNot 来排除具有特定 'name' 值的文档

// 执行查询
SearchResponse response = client.prepareSearch("your_index")
.setQuery(boolQuery)
.get();
代码解释
模糊查询 (FuzzyQueryBuilder): 对 description 字段应用模糊查询,可以捕获与 searchTerm 近似的词条。

排除特定字段值 (TermQueryBuilder): 使用 mustNot 子句结合 TermQueryBuilder 来排除那些 name 字段为 "Ab" 的文档。注意这里使用的是 name.keyword,这是假设 name 字段在映射中有一个未分词的 keyword 类型。如果没有,需要确认字段的确切映射类型。

组合查询 (BoolQueryBuilder): must 子句用来包含必须满足的模糊查询条件,而 mustNot 子句用于排除不想要的匹配条件。

通过上述设置,查询将返回那些 description 字段内容与 searchTerm 模糊匹配但 name 字段不是 "Ab" 的文档。这种查询可以有效地同时满足模糊搜索需求和特定排除条件。

相关文章
|
存储 JSON 网络协议
ElasticsearchRestTemplate客户端使用
ElasticsearchRestTemplate客户端使用
Springboot 导出word,动态填充表格数据
Springboot 导出word,动态填充表格数据
|
搜索推荐 Java 索引
Spring Boot中的ElasticsearchRepository
Spring Boot中的ElasticsearchRepository
|
SQL 自然语言处理 Java
Springboot项目中使用Elasticsearch的RestClient
上一篇介绍了Elasticsearch的入门《5000字详说Elasticsearch入门(一)》,本篇介绍Springboot如何集成使用Elasticsearch。分为3步:配置properties文件、引入pom依赖、配置RestHighLevelClient类。
28926 1
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
667 0
|
11月前
|
存储 缓存 自然语言处理
Elasticsearch 查询性能优化:从 3 秒到 300ms 的 6 个核心参数调优指南
本文分享某电商平台 Elasticsearch 性能调优实战,通过调整分片数、刷新间隔、缓存配置等 6 个核心参数,将商品搜索从 3 秒优化至 300 毫秒,显著提升查询性能与系统吞吐量。内容涵盖性能诊断、参数调优逻辑、实操方案及避坑指南,助力高频查询场景下的 ES 优化。
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
6345 0
|
自然语言处理 数据挖掘 定位技术
深入探索Elasticsearch中的QueryBuilders
深入探索Elasticsearch中的QueryBuilders
1140 0
|
Java
SpringBoot中进行elasticSearch查询,使用QueryBuilders构建各类条件查询
SpringBoot中进行elasticSearch查询,使用QueryBuilders构建各类条件查询
1074 0
Springboot整合Elasticsearch 7.X 复杂查询
这里使用Springboot 2.7.12版本,Elasticsearch为7.15.0。
874 1
Springboot整合Elasticsearch 7.X 复杂查询