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" 的文档。这种查询可以有效地同时满足模糊搜索需求和特定排除条件。

相关文章
|
自然语言处理 数据挖掘 定位技术
深入探索Elasticsearch中的QueryBuilders
深入探索Elasticsearch中的QueryBuilders
1086 0
|
Java
SpringBoot中进行elasticSearch查询,使用QueryBuilders构建各类条件查询
SpringBoot中进行elasticSearch查询,使用QueryBuilders构建各类条件查询
989 0
|
存储 Java API
elasticsearch基本操作之--使用QueryBuilders进行范围时间组合查询
elasticsearch基本操作之--使用QueryBuilders进行范围时间组合查询
2541 0
|
存储 JSON 网络协议
ElasticsearchRestTemplate客户端使用
ElasticsearchRestTemplate客户端使用
|
SQL 前端开发 关系型数据库
|
JSON 前端开发 Java
spring data elasticsearch:从零搭建springboot整合spring data elasticsearch3.x环境
spring-data系列为众多中间件、数据库的操作提供了极其方便的API,对于elasticsearch也不例外,spring-data-elasticsearch不仅为我们提供了现成的CRUD接口,也提供了简便的各类java client的整合方案 所以今天我们就来讲解,如果在springboot项目中整合spring-data-elasticsearch
2224 0
spring data elasticsearch:从零搭建springboot整合spring data elasticsearch3.x环境
|
搜索推荐 Java 索引
Spring Boot中的ElasticsearchRepository
Spring Boot中的ElasticsearchRepository
|
消息中间件 设计模式 缓存
Redis发布订阅:美丽的陷阱与不宜之境
Redis发布订阅:美丽的陷阱与不宜之境
1234 1
|
11月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
5610 0

热门文章

最新文章

下一篇
开通oss服务