如何在elastic上全查询汉字

How to full query on elastic about Chinese characters

我想在elastic上做全匹配查询 这是数据:

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

如果我使用这个代码

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

会得到数据,但是不合理

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

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

两者都是return数据,但不完全匹配

谁能帮忙!谢谢

有关 term queries 的 ElasticSearch 文档:

Avoid using the term query for text fields.

By default, Elasticsearch changes the values of text fields as part of analysis. This can make finding exact matches for text field values difficult.

To search text field values, use the match query instead.

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

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

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

如果您只查询名称的一部分,例如工业或行业,ElasticSearch 不会 return 结果。