elasticsearch painless脚本评分
-
painless
是一种新支持的脚本语言,语言格式和java
十分类似。可以参考以下文档: -
脚本参数
-
score_mode
计算functions中的分数形式,加减乘除,boost_mode
计算最外层的分数形式,加减乘除。所以最后总分是tf/idf
分数加上脚本得分。
put http://172.19.12.249:9200/indextest0193/player/_bulk?refresh
{"index":{"_id":1}}
{"content" : "测试语句1"}
{"index":{"_id":2}}
{"content" : "我的测试语句2"}
post http: //172.19.12.249: 9200/indextest0193/_search{
"query": {
"function_score": {
"query": {
"match": {
"content": "测"
}
},
"script_score": {
"script": {
"lang": "painless",
"source": "if(doc['content.keyword'].value.startsWith(params.keyword))return 1; return 0;",
"params": {
"keyword": "测"
}
}
},
"boost_mode": "sum"
}
}
}
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1.287682,
"hits": [
{
"_index": "indextest0193",
"_type": "player",
"_id": "1",
"_score": 1.287682,
"_source": {
"content": "测试语句1"
}
},
{
"_index": "indextest0193",
"_type": "player",
"_id": "2",
"_score": 0.2876821,
"_source": {
"content": "我的测试语句2"
}
}
]
}
}