前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch探索:Ingest pipeline实现索引重定向

Elasticsearch探索:Ingest pipeline实现索引重定向

作者头像
HLee
修改2020-12-30 11:08:14
1.1K0
修改2020-12-30 11:08:14
举报
文章被收录于专栏:房东的猫房东的猫

简介

default pipeline与final pipeline实际上都是普通的ingest pipeline,只是和一般的pipeline执行时机不同;default pipeline的执行时机是当前写入请求没有指定pipeline时,final pipeline的执行时机是在所有pipeline执行完毕后,具体如图所示:

如果当前bulk或者index请求指定了pipeline参数,则会先执行自定义的普通pipeline,所有的pipelie执行完毕后在执行final pipeline(如果索引的显式的设置了index.final_pipeline);如果当前bulk或者index请求没有指定pipeline,当索引显式的设置了index.default_pipeline参数时,则会先执行default pipeline,然后再执行final pipeline。

索引重定向

使用set ingest processor可以对当前写入的索引名称_index字段进行重新赋值, 因此我们可以创建一个pipeline, 将其配置为当前正在写入的索引的default pipeline,从而实现把所以重定向写入到另外一个索引中:

1.定义pipeline

代码语言:javascript
复制
PUT _ingest/pipeline/redirect
{
  "description": "_description",
  "processors": [
    {
      "set": {
        "field": "_index",
        "value": "my_newpipeline" // 新索引名
      }
    }
  ]
}

2.设置default_pipeline

代码语言:javascript
复制
PUT my_pipeline/_settings
{
  "index.default_pipeline": "redirect"
}

设置前:
"default_pipeline": "_none"
设置后:
"settings": {
    "index": {
      "number_of_shards": "5",
      "provided_name": "my_pipeline",
      "default_pipeline": "redirect",
      "creation_date": "1609225725978",
      "number_of_replicas": "1",
      "uuid": "Hp8KuokbTbe2suqK09ZDlQ",
      "version": {
        "created": "6070299"
      }
    }
}

经过上述设置后,可以发现,向my_pipeline索引写入的数据已经全部写入到了my_newpipeline索引。

3.索引数据

代码语言:javascript
复制
PUT my_pipeline/_doc/1
{
  "name": "pipeline",
  "message": "this is so cool!"
}

为什么不用final pipeline呢?因为final pipeline强制要求不能进行索引的重新命名(可能因为需要避免出现循环)。

存在的问题

使用default pipeline,使得在业务端不用做任何变更的情况下,将数据写入到一个新的索引中去,但是该方式还存在以下问题:

  • 性能问题:使用ingest pipeline是会带来一定的性能损耗的,pipeline的处理过程中需要遍历每个document,节点的cpu使用率势必会上升,在集群资源充足的情况下或者索引本身写入速率不高的情况下可以使用该方式解决索引切换的问题。
  • 查询方式的问题:虽然解决了写入索引切换的问题,但是数据存储到新的索引中去了,查询时就必须去查询新的索引;如果业务使用的是通配符的方式去查询,则非常好解决,只需要把新索引命名为老的索引名称再增加一个后缀即可,不能使用通配符的方式查询索引的话,就不能使用该方式切换写入的索引了。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 索引重定向
    • 1.定义pipeline
      • 2.设置default_pipeline
        • 3.索引数据
          • 存在的问题
          相关产品与服务
          Elasticsearch Service
          腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档