在 Elasticsearch 针对数据进行分析之前,我们必须针对数据进行摄入。在摄入的过程中,我们需要对数据进行加工,这其中包括非结构化数据转换为结构化数据,数据的转换,丰富,删除,添加新的字段等等一系列的工作。针对目前 Elastic 公司所提供的工具来看,我们有三种方法来针对数据进行加工:Logstash, Beats processors 以及 Ingest pipeline。

在之前的文章 “Elasticsearch 中的一些重要概念: cluster, node, index, document, shards 及 replica”, 我们讨论了 Elasticsearch 节点可以有不同的角色,主要重要的是 master、data 和 ingest(在 Elastic Stack 7.9 版本之后,有更多的节点角色)。 将摄取组件与其他组件分开的想法是创建一个更稳定的集群,因为重新处理文档时可能出现问题(主要是由于摄入部分使用的自定义插件,这可能需要重新启动摄入节点才能更新)。为了创建一个更稳定的集群,摄入节点应该由主节点(也可能与数据节点)隔离,以防出现一些问题,例如由于附件插件等插件导致的崩溃以及由于复杂的高负载 类型操作。

摄入节点可以在简单场景中替换 Logstash 安装。针对 Logstash 和 Ingest pipeline 这两种方法各有优缺点:

Logstash

  • 是一种开源的 Elastic Stack ETL (Extract, Transform, Load)引擎
  • 非常强大,并且有很多的 inputs/filters/outputs 来供我们选择
  • 可以很方便地和很多外部的服务进行整合并进行数据丰富
  • 必须在 JVM 环境中运行
  • 缺点是比较难以扩展,资源消耗比较大,通常需要专有的服务器来完成

Ingest pipeline:

  • 由专门的 Elasticsearch ingest node 来完成
  • 可以很方便地进行扩展
  • 支持很多的 processors

在今天的文章中,我们将介绍如何创建一个 ingest pipeline。如果你对 pipeline 还不是很熟的话,请参阅我之前的文章:

  • 如何在 Elasticsearch 中使用 pipeline API 来对事件进行处理

  • Elasticsearch:Elastic可观测性 - 数据结构化及处理

我将着重介绍如何使用 Kibana UI 来创建一个 ingest pipeline。在 Kibana 中,它提供了一个 UI 来对我们的 pipeline 进行管理,你可以:

  • 查看已经存在的所有 pipeline
  • 删除/编辑已经存在的 pipeline
  • 创建新的 pipeline
  • 用一些定制的文档来测试你的 pipeline

当我们的数据进入到 Elastic 集群中,并指定需要用到的 Pipeline,那么 Elasticsearch 中的 ingest node 将会帮我们安装规定的 processor 顺序来执行对数据的操作和处理。这在某种程度上方便了我们许多对集群的部署。如果我们单独部署一个 Logstash 有时没有那么多的灵活性。我们可以通过编程的方式随时修改这个 pipeline。

展示

我们首先打开 Kibana 界面:

如上图所示,它展示了目前我们已经创建好的 pipeline。大家也许很好奇,你没有创建上面的 filebeat 为开头的 pipeline,但是为什么上面有显示呢?这些 filebeat 的 pipeline 是我们在使用 filebeat setup 命令时生成的。具体可以参照我之前的教程 “Beats 入门教程 (二)”。

点击上面的 “Create a pipeline” 按钮:

我们填入相应的信息,并点击 Add a processor:

我们选择 Lowercase processor:

如果我们对 Lowercase processor 的用法不是很熟的话,我们可以点击右上角的链接去寻找更多的帮助信息:

针对我们的情况,我们对 Lowercase processor 进行如下的配置:

我们想针对文档中的 content 字段进行转换。点击上面的 Add:

从上面,我们可以看出来我们已经成功地创建了一个 Lowercase 的 processor。接下来,我们可以针对这个 processor 进行测试。点击 Test pipeline:

按照上面的提示,我们输入相应的文档格式,并点击上面的 Run the pipeline:

上面显示,content 字段的内容现在都变为小写的了。我们之前的文字是 "I love Beijing”。这证明了这个 Lowercase 的 processor 是工作正常的。

接下来,我们添加另外一个叫做 split 的 processor,并把句子按照空格进行分开并形成 token。按照同样的方法:

我们可以看到 field 以及 separator 是必选项:

我们填入上面的信息,并点击 Add 按钮:

从上面,我们可以看出来有一个新生成的 Split processor。我们点击上面的 Test pipeline 按钮:

显然,我们可以看到被分解的 token: i, love, beijing。它们被置于 target_field 所定义的 split_test 字段中。这说明了,我们的 Split processor 是正确的。我们可以使用一些其它的文档来进行测试:

在上面我们添加了另外一个文档。这个文档没有所需要的 content 字段。我们点击 Run the pipeline:

显然这次,我们看到了错误的信息。上面也显示了错误的信息。那么我们该如何来捕获这种错误呢?我们回到定义 processor 的界面,并在 Failure processors 里添加新的 processor:

在上面,我们选择 set processor,并配置相应的信息。点击 Add 按钮:

从上面,我们可以看出来有一个 set 的 processor 在 Failure processors 下面。点击测试按钮:

这个时候,我们可以看到已经被捕获的信息,并在 error 字段里显示出来了。

创建一个 ingest pipeline 的工作基本已经完成了。也许你想知道,我改如何来使用 API 来创建同样的 pipeline 呢?我们点击界面下的 show request 链接:

上面显示了整个创建这个 pipeline 的 API 命令。你可以点击那个拷贝的按钮进行拷贝操作,并在 Dev Tools 中进行测试。

Elasticsearch:创建 Ingest pipeline相关推荐

  1. Elasticsearch:Ingest pipeline 介绍

    Ingest pipeline 可让你在索引之前对数据执行常见转换. 例如,你可以使用 pipeline 删除字段.从文本中提取值并丰富你的数据. Pipeline 由一系列称为处理器(process ...

  2. Elasticsearch:Ingest Pipeline 实践

    相比较 Logstash 而言,由于其丰富的 processors 而受到越来越多人的喜欢.最重要的一个优点就是它基于 Elasticsearch 极具可拓展性和维护性而受到开发者的喜欢.我在之前创建 ...

  3. Elasticsearch:ingest pipeline 使用示例 - 解析常用日志格式

    在本示例教程中,你将在索引之前使用 ingest pipeline 以通用日志格式解析服务器日志. 在开始之前,请检查摄取管道的先决条件. 你要解析的日志类似于以下内容: 127.0.0.1 user ...

  4. Elasticsearch使用Ingest Pipeline进行数据预处理

    本文基于Elasticsearch7.x Elasticsearch可以使用自身的Ingest Pipeline功能进行数据预处理, 无须借助Logstash. Ingest Pipeline介绍 I ...

  5. Elasticsearch:从零开始创建一个 ingest pipeline 处理器

    实际上在我之前的文章: Elasticsearch:创建属于自己的 Ingest processor Elasticsearch:创建一个 Elasticsearch Ingest 插件 我已经详述了 ...

  6. Elasticsearch:如何处理 ingest pipeline 中的异常

    在我之前的文章 "如何在 Elasticsearch 中使用 pipeline API 来对事件进行处理" 中,我详细地介绍了如何创建并使用一个 ingest pipeline.简 ...

  7. ElasticSearch实战(三十六)-Ingest Pipeline 多管道处理器

    在前文我们已经讲了 Ingest Pipeline 使用方法,除了单管道处理方式以外,它还支持多管道组合并行处理的方式对数据进行清洗,同时支持管道动态扩展和灵活组合,让数据清洗更加强大和实用.     ...

  8. Elasticsearch创建一个索引怎么也这么复杂

    ES(8.1)认证考题大纲参考如下 https://mp.weixin.qq.com/s/x7lMmMAo2563JysMJ8vgRQ 今天是我们学习ES8.1官方搜索工程师的第一课,首先第一个问题就 ...

  9. ElasticSearch的Ingest节点

    2019独角兽企业重金招聘Python工程师标准>>> ElasticSearch的ingest节点用来在真正对文档进行索引之前做预处理. 所有的节点都是默认支持ingest的,任何 ...

最新文章

  1. linux poll in,Linux poll机制详细讲解
  2. android 检测过程,Android 系统对permision的检测过程
  3. [读码时间] 完美拖拽
  4. No converter found capable of converting from type
  5. steam怎么设置邮箱令牌_steam盗号?这样做50%能够避免损失!
  6. 如何使用CDSN写博客
  7. 步进电机选型的计算方法
  8. 一个简单的Perl脚本求单条序列的GC含量
  9. captain and crew
  10. 从文本进度条开始:谈谈自己缺失的Python基础知识
  11. 微信小程序之获取百度天气
  12. 敏捷个人-认识自我,管理自我 v0.8.pdf 下载
  13. 提取TCGA 中体细胞突变数据的表达矩阵
  14. 香蕉派,修改 uboot 和 kernel 串口波特率
  15. AFEPack 使用 Tutorial(一):解二维泊松方程
  16. 计算机图形学的主要研究内容是什么?
  17. 工程监测仪器振弦模拟信号采集仪VTN的传感器接口
  18. UESTC1712 七夜雪寂,一世人心(SG)
  19. 03 Wireshark TCP
  20. 互联网金融一直以高收益率见长,动辄10%以上的收益率成为近两年来推动行业

热门文章

  1. 简述在android中如何发送广播消息,Android Intent发送广播消息实例详解
  2. html使三角形渐变色,CSS3 简单的三角形渐变效果
  3. 破解软件的原理是什么(软件被破解公开)
  4. java获取当前日期,前一天,前N天,去年同期等日期
  5. Java 已知三边求三角形求面积
  6. 文献综述在哪儿能找到?
  7. 计算多个不同鞋码对应的脚长——C语言
  8. 测试双方距离的软件,有没有可以测量距离的app
  9. ES6 Promise 对象
  10. 基于TCP的通信为什么需要RETRY