multiMatchQuery
用于匹配多个字段,但是会对搜索关键字进行分词
但是有时候需要精确匹配 (也就是对搜索关键字不分词)多个字段 。怎么办呢
答案 是 用这个multiMatchQuery 方法进行查询。但是要指定type文章来源:https://www.toymoban.com/news/detail-623088.html
## multi_match查询的类型
multi_match: 查询内部到底如何执行主要取决于它的 type 参数,这个参数的可取得值如下
best_fields: 是默认类型,会将任何与查询匹配的文档作为结果返回,但是只使用最佳字段的 _score 评分作为评分结果返回。
most_fields: 将任何与查询匹配的文档作为结果返回,并所有匹配字段的评分合并起来
phrase: 在 fields 中的每个字段上均执行 match_phrase 查询,并将最佳字段的 _score 作为结果返回
phrase_prefix: 在 fields 中的字段上均执行 match_phrase_prefix 查询,并将每个字段的分数进行合并
DSL 语句示例:
GET multimatchtest/_search
{
"query": {
"multi_match": {
"query": "blabla like",
"operator": "and", -- 默认or
"fields": [ "subject", "message"],
"type": "phrase" -- 设置为精确匹配
}
}
}
Java 代码示例文章来源地址https://www.toymoban.com/news/detail-623088.html
QueryBuilders.multiMatchQuery(s,Cont.ORG_NAME,Cont.REQUIRE_ORG_NAME,Cont.PROJECT_ORG_NAME)
.type(MultiMatchQueryBuilder.Type.PHRASE))
到了这里,关于ES multiMatchQuery 短语精确匹配多个字段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!