minimum_should_match 的使用

  • 你可以使用' minimum_should_match '参数来指定返回的文档 must 匹配的' should '子句的数量或百分比。
  • 如果' bool '查询至少包含一个' should '子句且没有' must '或' filter '子句,则默认值为' 1 '。否则,默认值为“0”。
  • 得分 与 bool.filteredit

    在过滤器元素下指定的查询对得分没有影响——得分返回为0。分数只受指定查询的影响。例如,以下三个查询都返回状态字段包含术语active的所有文档。

    第一个查询将所有文档的得分赋为0,因为没有指定得分查询:

    GET _search
      "query": {
        "bool": {
          "filter": {
            "term": {
              "status": "active"
    

    这个bool查询有一个match_all查询,它为所有文档分配1.0的分数。

    GET _search
      "query": {
        "bool": {
          "must": {
            "match_all": {}
          "filter": {
            "term": {
              "status": "active"
    

    这个constant_score查询的行为与上面的第二个例子完全相同。constant_score查询为过滤器匹配的所有文档分配一个1.0的分数。

    GET _search
      "query": {
        "constant_score": {
          "filter": {
            "term": {
              "status": "active"
    negative
    (必需,查询对象)用于降低匹配文档的相关度的查询。<br />如果返回的文档与正查询匹配,则boost查询计算文档的最终关联得分,如下所示:<br />1. 从正面查询中获取原始的相关性得分。<br />2. 将分数乘以negative_boost值。
    negative_boost
    (必需,浮点数)0到1.0之间的浮点数,用于降低匹配负查询的文档的相关性得分。
    

    常数分数查询 Constant score query

    包装一个过滤器查询,并使用等于boost参数值的相关分数返回每个匹配的文档。

    GET /_search
      "query": {
        "constant_score": {
          "filter": {
            "term": { "user.id": "kimchy" }
          "boost": 1.2
    filter
    (必需的,查询对象)要运行的过滤查询。任何返回的文档都必须与此查询匹配。<br />过滤查询不计算关联分数。为了提高性能,Elasticsearch会自动缓存经常使用的过滤器查询。
    boost