如何使用Kibana脚本字段在嵌套字段中获取价值?

问题描述 投票:0回答:1

我是Elastic Stack的新手。在这里,我试图获取“压力”的值,然后使用Kibana脚本字段将其转换为数字值(字符串⇒数字)。我尝试了脚本字段,但对我而言不起作用。

有什么想法吗?非常感谢您的提前支持。我的数据记录之一如下。

{
  "_index": "production",
  "_type": "_doc",
  "_id": "4570df7a0d4ec1b0e624e868a5861a0f1a9a7f6c35fdsssafafsa734fb152f4bed",
  "_version": 1,
  "_score": null,
  "_source": {
    "factorycode": "AM-NY",
    "productcode": "STR",
    "lastupdatetime": "2020-05-28T04:16:17.590Z",
    "@timestamp": "2020-05-28T04:14:48.000Z",
    "massproduction": {
      "errorcode": null,
      "equipment": "P17470110",
      "operatorldap": null,
      "machinetime": null,
      "quantity": "1",
      "externalfilename": null,
      "errorcomment": null,
      "datas": {
        "data": [
          {
            "value": "45.4",
            "id": "001",
            "name": "pressure"
          },
          {
            "value": "0.45",
            "id": "002",
            "name": "current"
          }
        ]
      },
      "ladderver": null,
      "eid": null,
      "setupid": null,
      "model": "0",
      "identificationtagid": null,
      "workid": "GD606546sf0B002020040800198",
      "reuse": {
        "num": "0"
      },
      "registrydate": "2020-05-28T13:14:48",
      "product": "GD604564550B00",
      "line": "STRS001",
      "judge": "1",
      "cycletime": null,
      "processcode": "OP335",
      "registryutcdate": "2020-04-28T04:14:48",
      "name": "massproduction"
    }
  },
  "fields": {
    "massproduction.registrydate": [
      "2020-05-28T13:14:48.000Z"
    ],
    "@timestamp": [
      "2020-05-28T04:14:48.000Z"
    ],
    "lastupdatetime": [
      "2020-05-28T04:16:17.590Z"
    ],
    "registrydate": [
      "2020-05-28T13:14:48.000Z"
    ],
    "massproduction.registryutcdate": [
      "2020-05-28T04:14:48.000Z"
    ],
    "registryutcdate": [
      "2020-05-28T04:14:48.000Z"
    ]
  },
  "sort": [
    158806546548000
  ]
}

这是我在Kibana中的“无痛”脚本字段。

for(item in params._source.massproduction.datas.data)
{
    if(item.name=='pressure'){
      return item.value;
   }
}
return 0;
elasticsearch kibana elastic-stack calculated-columns
1个回答
0
投票

您可以使用Float.parseFloat(value)将字符串转换为浮点型

 for(item in params._source.massproduction.datas.data)
                    {
                      if(item.name=='pressure')
                      {
                        return  Float.parseFloat(item.value);
                      }
                    }
                    return 0;
© www.soinside.com 2019 - 2024. All rights reserved.