Elasitcsearch脚本查询null错误

时间:2018-03-21 07:50:31

标签: elasticsearch

在ES版本5.x中,我使用了这个查询并运行良好。

"bool": {
    "must": [
      {
        "script": {
          "script": {
            "inline": "params['_source']['my_field'] != null",
            "lang": "painless"
          },

但是在ES版本6.2中,出现以下错误消息时出现错误。

"error": {
    "root_cause": [
    {
        "type": "script_exception",
        "reason": "runtime error",
        "script_stack": [
            "params['_source']['my_field'] != null"
            ,
            " ^---- HERE"
        ],
        "script": "params['_source']['my_field'] != null",
        "lang": "painless"
    }
],

params中没有'_source'数据。因为下面的查询没有返回数据。

"inline": "params['_source'] != null",

我该如何处理此错误?

1 个答案:

答案 0 :(得分:0)

请尝试这样的事情:

{ 
  "query" : {
    "bool": {
      "must": [
        {
          "script": {
            "script": {
              "source": "(doc.containsKey('my_field') ? doc['my_field'].value : null) != null",
             "lang": "painless"
            }
          }
        }
      ]
    }
  }
}

它适用于我的6.2.2版本。