如何全面查询弹性汉字



我想在弹性上执行完全匹配查询 以下是数据:

{
"organizationId": "ec1c691a4b43e65aebdb2ab9481",
"organizationName": "工業區"
}

如果我使用此代码

QueryBuilder QueryBuilder = QueryBuilders.termQuery("organizationName","工");

它会得到数据,但这是不合理的

我尝试了以下 2 个代码

QueryBuilder QueryBuilder = QueryBuilders.matchPhraseQuery("organizationName","工業");
QueryBuilder QueryBuilder = QueryBuilders.matchPhraseQuery("organizationName","業區");

两者都返回数据,但不是完全匹配的

谁能帮忙!啧

关于术语查询的 ElasticSearch 文档:

避免对文本字段使用术语查询。

默认情况下,Elasticsearch 会更改文本字段的值作为 分析。这可以查找文本字段值的完全匹配项 难。

若要搜索文本字段值,请改用匹配查询。

匹配查询是用于执行全文搜索的标准查询,包括模糊匹配选项。

所以在你的例子中,我会做以下事情来获得完全匹配的行为

QueryBuilders.matchQuery("organizationName", "工業區")

如果只查询名称的一部分,如工業或業區,ElasticSearch 将不会返回结果。

相关内容

  • 没有找到相关文章

最新更新