Elasticsearch script_fields如何访问文档得分?
在Elasticsearch的script_field中访问文档得分的方法
直接使用
_score或doc['_score'].value无法访问文档得分的原因:_score不是Painless脚本默认直接可见的变量,直接引用会触发编译错误doc对象仅用于访问文档映射中定义的字段,_score不属于文档字段,因此doc['_score'].value会提示字段不存在
正确的访问方式是通过
params._score来获取文档得分,修改后的查询代码如下:
GET /_search { "query": { "match_all": {} }, "script_fields": { "my_score": { "script": { "lang": "painless", "source": "return params._score * 2" } } } }
- 说明:
params对象包含了查询的上下文参数,其中就包含当前文档的得分_score,通过params._score即可在script_field的脚本中正常访问并进行计算。
内容的提问来源于stack exchange,提问作者Georgy Nevsky
相关产品推荐
相关产品推荐

