elasticsearch 基础 —— Explain、Version、min_score、query rescorer

Explain

相关度得分计算:

GET /_search
{
    "explain": true,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

Version

返回每个搜索命中的版本:

GET /_search
{
    "version": true,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

Index Boots

允许在搜索多个索引时为每个索引配置不同的提升权重。当来自一个索引的命中比来自另一个索引的命中更重要时,这非常方便:

GET /_search
{
    "indices_boost" : {
        "index1" : 1.4,
        "index2" : 1.3
    }
}

您还可以将其指定为数组来控制增强的顺序。

GET /_search
{
    "indices_boost" : [
        { "alias1" : 1.4 },
        { "index*" : 1.3 }
    ]
}

min_score

排除_score小于min_score中指定的最小值的文档:

GET /_search
{
    "min_score": 0.5,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

query  rescorer

query rescorer仅对query和post_filter阶段返回的Top-K结果执行第二个查询。每个分片上将检查的文档数量可以通过window_size参数控制,该参数默认为10。 默认情况下,原始查询和rescore查询的分数线性组合,以生成每个文档的最终_score。可以分别使用query_weight和rescore_query_weight来控制原始查询和rescore查询的相对重要性。两者都默认为1。

POST /_search
{
   "query" : {
      "match" : {
         "message" : {
            "operator" : "or",
            "query" : "the quick brown"
         }
      }
   },
   "rescore" : {
      "window_size" : 50,
      "query" : {
         "rescore_query" : {
            "match_phrase" : {
               "message" : {
                  "query" : "the quick brown",
                  "slop" : 2
               }
            }
         },
         "query_weight" : 0.7,
         "rescore_query_weight" : 1.2
      }
   }
}

可以使用score_mode控制分数组合的方式:

分数模式 描述

total

添加原始分数和rescore查询分数。默认值。

multiply

将原始分数乘以rescore查询分数。对function query重新调整有用。

扫描二维码关注公众号,回复: 3356814 查看本文章

avg

平均原始分数和rescore查询分数。

max

取最大原始分数和rescore查询分数。

min

取最初得分和rescore查询得分的分钟。

Multiple Rescores

也可以按顺序执行多个重新扫描:

POST /_search
{
   "query" : {
      "match" : {
         "message" : {
            "operator" : "or",
            "query" : "the quick brown"
         }
      }
   },
   "rescore" : [ {
      "window_size" : 100,
      "query" : {
         "rescore_query" : {
            "match_phrase" : {
               "message" : {
                  "query" : "the quick brown",
                  "slop" : 2
               }
            }
         },
         "query_weight" : 0.7,
         "rescore_query_weight" : 1.2
      }
   }, {
      "window_size" : 10,
      "query" : {
         "score_mode": "multiply",
         "rescore_query" : {
            "function_score" : {
               "script_score": {
                  "script": {
                    "source": "Math.log10(doc.likes.value + 2)"
                  }
               }
            }
         }
      }
   } ]
}

猜你喜欢

转载自blog.csdn.net/ctwy291314/article/details/82756390