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控制分数组合的方式:
分数模式 | 描述 |
---|---|
|
添加原始分数和rescore查询分数。默认值。 |
|
将原始分数乘以rescore查询分数。对 |
|
平均原始分数和rescore查询分数。 |
|
取最大原始分数和rescore查询分数。 |
|
取最初得分和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)"
}
}
}
}
}
} ]
}