match 和 bool 之间有什么区别必须匹配 Elasticsearch 中的查询

What is difference between match and bool must match query in Elasticsearch

Only match 和 bool must match query 在 ES 中有什么区别?

首先,只使用匹配查询

{
   "query":{
      "match":{
         "address":"mill"
      }
   }
}

二、使用复合查询

{
  "query": {
    "bool": {
      "must": [
        { "match": { "address": "mill" } }
      ]
     }
   }
}

你能告诉我一切吗? 它们有什么区别?

正如您在问题中所写,他们将执行相同的操作。

match 查询是一个非常直接的全文条件语句。

bool query allows you to add multiple fields and multiple conditions such as exists(验证某个字段是否在文档中找到)、should(等价的 OR)和 must_not(不等价的)。

再次以您的示例为例,由于 bool 查询只有一个 must, match 条件,因此它只会 return 包含值 mill 的所有文档address 字段。

希望对您有所帮助! :)

当您在 bool must 子句中仅使用一个 match 时,则没有区别,当您想组合多个(布尔)条件时,bool 子句很有用,有关 [= 的更多信息20=]。它支持以下标准。

  1. 必须
  2. must_not
  3. 过滤器
  4. 应该

让我从你的问题中举一个小例子来说明。

只有地址和 first_name

的索引映射
{
    "mappings": {
        "properties": {
            "address": {
                "type": "text"
            },
            "first_name" :{
                "type" : "text"
            }
        }
    }
}

索引 3 个文档,地址相同 mill,但不同 first_name

{
   "address" : "mill",
   "first_name" : "Johnson"
}

{
   "address" : "mill",
   "first_name" : "Parker"
}

{
   "address" : "mill",
   "first_name" : "opster"
}

搜索查询以显示 mill 但 must_not 包含 first_name 作为 parker

的所有地址
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "address": "mill"
                    }
                },
                {
                    "must_not": {
                        "first_name": "parker"
                    }
                }
            ]
        }
    }
}

结果只有2个地址

"hits": [
         {
            "_index": "so-60620921-bool",
            "_type": "_doc",
            "_id": "2",
            "_score": 0.13353139,
            "_source": {
               "address": "mill",
               "first_name": "opster"
            }
         },
         {
            "_index": "so-60620921-bool",
            "_type": "_doc",
            "_id": "3",
            "_score": 0.13353139,
            "_source": {
               "address": "mill",
               "first_name": "Johnson"
            }
         }
      ]

根据OP评论,提供query and filter context,详细了解性能方面。