首页 > 解决方案 > 7.x 版中空值的无痛新行为

问题描述

从版本 6 升级到 7 后,我们在处理聚合时遇到了新的行为。现在,当 Elastic 在运行 Painless 脚本时遇到字段中的空值时,默认情况下它会中断。

例如,以下简单的 if/else 语句:

if(doc['MY_FIELD'].value <= 9000) 
{return 'Less than 9k' }
else if(doc['MY_FIELD'].value > 9000)
{ return ''More than 9k' }

在版本 6 之前,我们可以毫无问题地运行此代码。但是现在,如果您尝试相同的操作,当 Elastic 为该字段处理单个空值时,它会失败。

  "lang" : "painless",
  "caused_by" : {
    "type" : "illegal_state_exception",
    "reason" : "A document doesn't have a value for a field! Use doc[<field>].size()==0 to check if a document is missing a field!"

这使得现在必须在任何地方进行这种"doc[<field>].size()==0"检查。

这是关闭这个新行为并恢复前一个行为的参数吗?谢谢

标签: c#elasticsearchnestelasticsearch-painless

解决方案


推荐阅读