【问题标题】:Scripted field in kibana for fields that are sometimes missingkibana 中的脚本字段,用于有时缺少的字段
【发布时间】:2020-04-29 18:39:28
【问题描述】:

我有一个脚本字段“transferspeed”,计算为"doc['bytes'].value / doc['duration'].value"。该字段正在运行,但我收到警告“Courier Fetch: 6 of 12 shards failed.”。

我认为这是因为并非所有文档都存在“字节”。我该如何解决这个问题,是否可以调整脚本或者我必须在没有字节字段的文档中添加一个 0 的“字节”字段?

谢谢

【问题讨论】:

    标签: elasticsearch kibana-4


    【解决方案1】:

    如果您可以在没有bytesduration 值(这可能是有道理的,因为没有 他们),您可以使用 exists 过滤以将结果限制为具有bytesduration 的文档 字段。

    【讨论】:

      【解决方案2】:

      好吧,在取值之前,您需要检查这些字段是否存在。 类似的东西 -

      If(doc.contains('bytes') && doc.contains('duration')){
             // Do computation
      }
      

      这应该可以解决问题。

      【讨论】:

      • 这不起作用,我已经尝试检查字段是否存在,但总是出现编译错误,在这里我也遇到编译错误。 ParseException:位置 (16) 处出现意外字符“”。我认为脚本字段中不允许 if...link
      • 你能过去你正在使用的整个命令吗?我猜你是从命令行做的
      • 我在 Kibana Indices -> Scripted Fields -> Add Scripted Field 中进行操作,有两个字段,名称和脚本。名称是“transferspeed”,脚本是“doc['bytes'].value / doc['duration'].value”。该计算适用于具有这两个字段的文档,但 elasticserch 服务器会为其他文档抛出异常而没有
      【解决方案3】:

      试试这个

      if(doc['bytes'].value!=null && doc['duration'].value!=null) {
         return doc['bytes'].value / doc['duration'].value
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多