elasticsearch elasticsearch中如何根据现场数据计算分数
我在文档中有以下字段elasticsearch elasticsearch中如何根据现场数据计算分数,elasticsearch,elasticsearch,我在文档中有以下字段 { name: "Pearl", age : 43, weight: 54, bodyWeight : 103, height : 1.8 } 现在,我想根据文档的体重与身高的比率来获得文档的分数。如何做到这一点?Elasticsearch通过提供自定义评分。在您的情况下,您可以使用以下方法为文档打分: 虽然这似乎是一个快速而简单的解决方案,但它有两个问题: *如果height的值为0:Infinity,评分将有一个有趣的行为? *脚本评分很慢 解决方案可以是在文档中为权
{
name: "Pearl",
age : 43,
weight: 54,
bodyWeight : 103,
height : 1.8
}
现在,我想根据文档的体重与身高的比率来获得文档的分数。如何做到这一点?Elasticsearch通过提供自定义评分。在您的情况下,您可以使用以下方法为文档打分: 虽然这似乎是一个快速而简单的解决方案,但它有两个问题: *如果
height
的值为0:Infinity,评分将有一个有趣的行为?
*脚本评分很慢
解决方案可以是在文档中为权重编制索引
{
name: "Pearl",
age : 43,
weight: 54,
bodyWeight : 103,
height : 1.8
ratio: 57.2
}
然后
您可以通过使用脚本来实现这一点。请尝试以下脚本:
{
"query": {
"function_score": {
"functions": [
{
"script_score": {
"script": "_score * doc['bodyWeight'].value / doc['height'].value"
}
}
],
"score_mode": "sum",
"boost_mode": "replace"
}
}
}
像wise一样,您可以使用现场数据计算分数。有关评分的更多参考信息,请访问您所说的“体重与身高之比”是什么意思?
"field_value_factor": {
"field": "ratio"
}
{
"query": {
"function_score": {
"functions": [
{
"script_score": {
"script": "_score * doc['bodyWeight'].value / doc['height'].value"
}
}
],
"score_mode": "sum",
"boost_mode": "replace"
}
}
}