Elasticsearch摄取节点(二)——管道(pipeline)的使用

管道的使用

管道中对文档数据的访问

对文档字段的操作

假如需要对文档中某些字段进行操作,只需要在field中指定字段名称或者通过_source前缀进行访问。

使用官方提供的_simulate模拟操作我们可以很轻松的看到其效果。下面内容一个直接访问foo,一个通过_source.boo对文档数据进行操作的例子

POST _ingest/pipeline/_simulate
{
   
    "pipeline": {
   
        "description": "_description",
        "processors": [
            {
   
                "set": {
   
                    "field": "foo",
                    "value": "foo_value"
                }
            },
            {
   
                "set": {
   
                    "field": "_source.boo",
                    "value": "boo_value"
                }
            }
        ]
    },
    "docs": [
        {
   
            "_index": "index",
            "_id": "id",
            "_source": {
   
                "foo": "foo",
                "boo": "boo"
            }
        },
        {
   
            "_index": "index",
            "_id": "id",
            "_source": {
   
                "foo": "foo",
                "boo": "boo"
            }
        }
    ]
}

结果可以发现使用这两个方式都可以修改对应内容。

{
   
  "docs" : [
    {
   
      "doc" : {
   
        "_index" : "index",
        "_type" : "_doc",
        "_id" : "id",
        "_source" : {
   
          "boo" : "boo_value",
          "foo" : "foo_value"
        },
        "_ingest" : {
   
          "timestamp" : "2019-11-27T01:32:41.133778Z"
        }
      }
    },
    {
   
      "doc" : {
   
        "_index" : "index",
        "_type" : "_doc",
        "_id" : "id",
        "_source" : {
   
          "boo" : "boo_value",
          "foo" : "foo_value"
        },
        "_ingest" : {
   
          "timestamp" : "2019-11-27T01:32:41.133785Z"
        }
      }
    }
  ]
}

除了文档中的字段,我们也可以使用_index_type_id_routing对ES的元数据进行访问。(无需担心此操作会影响文档数据,因为ES限制映射中的字段不能存在和元数据相同的字段名)

在上面例子的返回内容中可以看到有一个_ingest属性。_ingest的数据同样可以使用_ingest.timestamp来提取其时间戳。但是需要注意的是ingest元数据并不是持久的数据,其在管道处理完毕之后就被丢弃。

使用文档中的数据

有些时候我们使用管道只是进行时间戳的赋值或者字段拼接,其内容根据数据内容的变化而变化。这个时候我们需要获取到文档或者ES的元素进行操作。这个情况下我们可以使用{ {field}}的方式进行访问。

获取_ingest中的时间戳赋值给received

{
   
  "set"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大·风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值