elasticsearch - Elasticsearch:从脚本字段返回空值

标签 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 ???

最佳答案

返回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 
}

关于elasticsearch - Elasticsearch:从脚本字段返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097157/

相关文章:

java - 使用 cyberneko 解析 html 以查找 'div' -标签

grails - 在4 td之后对每个新tr进行Groovy

scala - 嵌入式 scala 与嵌入式 groovy

php - 不确定我的映射在 Elasticsearch 中是否有效

elasticsearch - 在Elasticsearch 5.6中使嵌套字段不可搜索

elasticsearch - 由于 IDF 的不同 maxDocs 而导致评分不佳

elasticsearch - 一个过滤器模块中有 2 个编解码器,用于 logstash

Java SimpleHTTPServer 相当于 "python -m SimpleHTTPServer"

Javascript,常规调用方法?

elasticsearch - 弹性的UPSERT功能?