如何完整查询汉字的弹性

问题描述 投票:0回答:1

我想对松紧带进行完全匹配查询这是数据:

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

如果我使用此代码

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

它将获取数据,但这是不合理的

而且我尝试了以下2个代码

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

均返回数据,但不完全匹配

任何人都可以帮忙! Tks

java elasticsearch elasticsearch-query resthighlevelclient
1个回答
1
投票

关于term queries的ElasticSearch文档:

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

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

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

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

因此,在您的示例中,我将执行以下操作以具有完全匹配的行为

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

如果仅查询名称的一部分,例如工业或工业区,ElasticSearch将不会返回结果。

© www.soinside.com 2019 - 2024. All rights reserved.