Elasticsearch:从脚本字段返回空值

时间:2015-12-04 20:47:38

标签: elasticsearch groovy

我正在使用Elasticsearch,我有一个用Groovy编写的脚本字段。它需要为某些值替换myField的值,但我想让大多数值保持不变。以下脚本的工作原理除外,根本没有该字段的文档。如何将脚本字段值设为空?

if (some criteria) {
    return ...; // modified value
}
//  This returns 0 if myField doesn't exist
return doc['myField'].value

我可以检查空状态,但我还没有找到返回空值的方法:

if (doc['myField'].empty)
    return ???

1 个答案:

答案 0 :(得分:0)

返回null完全没问题。我认为问题更多的是你的不同测试条件的排序。我已尝试重现您的问题,并且我可以使用以下脚本返回null

  "script_fields": {
    "my_script_field": {
      "script": "if (doc.myField.empty) { return null } else if (some criteria) { return modifiedValue } else { return doc.myField.value }"
    }
  }

首先检查具有空值的字段并返回null。 然后,您确保拥有非空和现有字段。因此,您可以检查您的标准并返回您想要的任何修改字段。 最后,您可以返回不符合指定条件的非空字段的未修改值。

脚本如下所示:

if (doc.myField.empty) { 
   return null 
} else if (some criteria) { 
   return modifiedValue 
} else { 
   return doc.myField.value 
}