我想在弹性上执行完全匹配查询 以下是数据:
{
"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 将不会返回结果。