Match All 查询

Match All 查询 #

match_all 查询返回所有文档。如果需要返回整个文档集,这个查询在测试大量文档集时很有用。

相关指南(先读这些) #

GET _search
{
  "query": {
    "match_all": {}
  }
}

match_all 查询有一个 match_none 的对应查询,这个对应查询很少有用:

GET _search
{
  "query": {
    "match_none": {}
  }
}

参数说明 #

全匹配和全不匹配查询都接受以下参数。所有参数都是可选的。

参数数据类型描述
boostFloat一个浮点数值,用于指定该字段对相关性分数的权重。大于 1.0 的值会增加字段的权重。介于 0.0 和 1.0 之间的值会降低字段的权重。默认值为 1.0。
_nameString用于查询标签的查询名称。可选。

常见使用场景 #

配合 filter 使用 #

match_all 经常与过滤器结合使用,在不需要相关性评分的场景下获取文档子集:

GET products/_search
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "price": { "gte": 100 }
        }
      }
    }
  }
}

在聚合中使用 #

当只需要聚合结果而不关心搜索命中时,match_all 是默认的隐含查询。以下两种写法等价:

GET products/_search
{
  "size": 0,
  "aggs": {
    "avg_price": {
      "avg": { "field": "price" }
    }
  }
}

调整 boost 控制评分 #

通过调整 boost 值可以控制 match_all 分配给所有文档的评分(默认为 1.0):

GET _search
{
  "query": {
    "match_all": { "boost": 1.5 }
  }
}

提示match_all 在没有指定查询条件时是 Easysearch 的默认行为。直接使用 GET index/_search 等价于使用 match_all