在摄取节点中拆分处理器后访问数组元素

时间:2017-06-23 12:49:06

标签: elasticsearch logstash data-ingestion

在使用摄取节点管道中的“拆分”处理器将字符串拆分为数组后,我正在尝试访问数组元素?

我有一个用斜杠('/')分隔的长字符串。我只想将一个子字符串传递给索引,然后转储其余的字符串。

例如,我有一个字符串“/ aaa / bbb / ccc”。我只想索引“ccc”。

我目前的想法是使用split + set + remove,但我不知道如何在拆分后访问数组元素。

PS:如果我使用Logstash,是否有解决方案?

1 个答案:

答案 0 :(得分:0)

您可以使用script处理器

POST _ingest/pipeline/_simulate
{
  "pipeline" :
  {
    "description": "_description",
    "processors": [
      {
        "script" : {
          "inline" : "ctx.foo = ctx.foo.substring(ctx.foo.lastIndexOf('/') + 1)"
        }
      }
    ]
  },
  "docs": [
    {
      "_index": "index",
      "_type": "type",
      "_id": "id",
      "_source": {
        "foo": "/divided/by/slashes"
      }
    }
  ]
}

返回

{
    "docs": [
      {
          "doc": {
              "_id": "id",
              "_type": "type",
              "_index": "index",
              "_source": {
                  "foo": "slashes"
              },
              "_ingest": {
                 "timestamp": "2017-06-23T14:53:46.871Z"
              }
           } 
       }
   ]

}

请注意,这不完全是故障安全的,但应该先给您一个想法。

相关问题