gpt4 book ai didi

elasticsearch - 访问 script_score 中的数组

转载 作者:行者123 更新时间:2023-11-29 02:49:27 25 4
gpt4 key购买 nike

对于我的一个 ElasticSearch 查询,我想定义一个 function score并按它排序。函数 score 获取计算的分数并为其添加提升值。每个文档都将其提升值存储在数字字段中。

像这样:

{
"from": 0,
"size": 10,
"query": {
"function_score": {
"functions": [
{
"script_score": {
"script": "_score + doc['boostFactor'].value"
}
}
],
"query": {
"filtered": {
"query": {
"query_string": {
"query": "search for this!"
}
}
}
},
"boost_mode": "replace"
}
}
}

目前一切顺利,一切正常。现在的问题是:向前看,每个文档都会有一个 array 提升值:

"boostFactor": [ 0, 0.5, 1, 3 ]

启动查询时,我希望脚本得分根据预定义的索引选择数组的特定元素。假设 index=2,那么脚本分数可能如下所示:

                "script_score": {
"script": "_score + doc['boostFactor'][2].value"
}

不幸的是,ElasticSearch 不接受这个:

...Query Failed [Failed to execute main query]]; 
nested: CompileException[[Error: unexpected token in constructor]...

有什么想法吗?

最佳答案

doc['boostFactor'].value 返回单个值。要获取整个数组,请使用 doc['boostFactor'].values;然后您可以按照预期获得数组中的特定索引:

            {
"script_score": {
"script": "_score + doc['boostFactor'].values[2]"
}
}

有关更多信息,请参阅 Elasticsearch 文档的脚本部分:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html

关于elasticsearch - 访问 script_score 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com