c# - 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"
检查。
这是关闭这个新行为并恢复前一个行为的参数吗?谢谢
解决方案
推荐阅读
- python - 从另一个 .py 文件访问 Python 字典不会更新 Kivy 标签
- sql-server - 尝试连接到 Django 中的本地 MSSQL 数据库时,您使用什么作为主机名?
- sql - SQL 动态线索
- c++ - 在 C++ 中使用 PlaySound() 更改 BGM
- kubectl - 停止 kubectl 在最后打印“pod curl deleted”
- riscv - 命令的实现
- scala - 扩展 org.apache.spark.sql.Row 功能:Spark Scala
- c# - 访问引用类型参数的不同属性的方法上的多个 NSubstitute 调用配置(以避免 NullReferenceException)
- vb.net - 选中复选框时如何从 DataGridView 组合框下拉列表中获取选定的值?
- ruby-on-rails - Rails - 向已经存在的用户发送邀请