multi_match
查询为能在多个字段上反复执行相同查询提供了一种便捷方式。
Note
|
|
默认情况下,查询的类型是 best_fields
,这表示它会为每个字段生成一个 match
查询,然后将它们组合到 dis_max
查询的内部,如下:
{
"dis_max": {
"queries": [
{
"match": {
"title": {
"query": "Quick brown fox",
"minimum_should_match": "30%"
}
}
},
{
"match": {
"body": {
"query": "Quick brown fox",
"minimum_should_match": "30%"
}
}
},
],
"tie_breaker": 0.3
}
}
上面这个查询用 multi_match
重写成更简洁的形式:
{
"multi_match": {
"query": "Quick brown fox",
"type": "best_fields", (1)
"fields": [ "title", "body" ],
"tie_breaker": 0.3,
"minimum_should_match": "30%" (2)
}
}
-
best_fields
类型是默认值,可以不指定。 -
如
minimum_should_match
或operator
这样的参数会被传递到生成的match
查询中。
字段名称可以用模糊匹配的方式给出:任何与模糊模式正则匹配的字段都会被包括在搜索条件中,例如可以使用以下方式同时匹配 book_title
、 chapter_title
和 section_title
(书名、章名、节名)这三个字段:
{
"multi_match": {
"query": "Quick brown fox",
"fields": "*_title"
}
}