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

相关文章
|
3月前
|
JavaScript 前端开发
js中模糊搜索 模糊匹配如何实现?
js中模糊搜索 模糊匹配如何实现?
|
自然语言处理 索引
ES 匹配多个搜索条件和精确查询
ES 匹配多个搜索条件和精确查询
|
3月前
|
JavaScript
filter来实现模糊搜索的功能-很有用!
filter来实现模糊搜索的功能-很有用!
|
8月前
|
人工智能 自然语言处理 算法
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
|
10月前
|
数据挖掘
基于R筛选过滤低丰度物种的几种方式
基于R筛选过滤低丰度物种的几种方式
266 0
|
自然语言处理 Java
如何使用ES更有效率的进行多字段模糊匹配
如何使用ES更有效率的进行多字段模糊匹配
|
JavaScript 前端开发 API
全文检索与高亮关键词匹配,用replace就够了
全文关键词检索高亮,这个在业务中常有的功能,比如浏览器默认就有个功能,关键词搜索就会匹配你检索的文字,并且会给你高亮,这是怎么实现的呢?
223 0
全文检索与高亮关键词匹配,用replace就够了
|
SQL 存储 关系型数据库
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(二)
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(二)
227 0
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(二)
|
存储 SQL 人工智能
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(三)
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(三)
895 1
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(三)
|
SQL 存储 缓存
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(一)
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(一)
179 0

热门文章

最新文章