0

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

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

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

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

PS:如果我使用 Logstash 有解决方案吗?

4

1 回答 1

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"
              }
           } 
       }
   ]

}

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

于 2017-06-23T14:57:38.283 回答