elasticsearch script_score自定义评分函数:如何替换缺失值?

时间:2017-03-31 23:42:19

标签: elasticsearch elasticsearch-5 elasticsearch-painless

我正在查看elasticsearch的文档,了解如何为自定义得分函数创建脚本,该函数使用未在this链接处查询的字段。

从我可以看到你构建一个像这样的脚本函数:

"script_score" : {
    "script" : {
      "lang": "painless",
      "inline": "_score * doc['my_numeric_field'].value"
    }
}

但我想知道如果缺少doc['my_numeric_field'].value,替换config_bin的语法是什么?

2 个答案:

答案 0 :(得分:0)

对我来说,以下工作(我的版本是6.2.4):

          "script_score" : {
            "script" : {
              "source": "doc.containsKey('my_numeric_field') ? doc['my_numeric_field'].value : 0"
            }
        },

发现于:

https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-fields.html

答案 1 :(得分:0)

问题很老,但也许我的回答对某人有用。

You should use size,以检查是否缺少值:

doc['field'].size() == 0