当前位置:主页 > 查看内容

Ingest pipelines

发布时间:2021-05-17 00:00| 位朋友查看

简介:创作人:李增胜 Elastic 提供了三种方式进行数据加工处理:Logstash、Beats Processors 以及 Ingest Pipeline,本文着重介绍 Ingest Pipeline,以下比较了 Logstash 与 Ingest Pipeline的一些区别,便于在实际业务场景中选择: 种类部署数据缓冲数据处理数据……

创作人:李增胜

Elastic 提供了三种方式进行数据加工处理:Logstash、Beats Processors 以及 Ingest Pipeline,本文着重介绍 Ingest Pipeline,以下比较了 Logstash 与 Ingest Pipeline的一些区别,便于在实际业务场景中选择:

种类部署数据缓冲数据处理数据源Logstash需要另外部署,增加复杂性采用队列机制缓冲数据,多队列支持支持大量processors,远超 ingest支持外部数据源,如MYSQL、Kafka、Beats等Ingest pipeline无需另外部署,易于扩展无缓冲策略支持超过30种processorsIngest 也可和 Beats 或者 Logstash 解决特定场景数据源问题总结:如果业务场景 Ingest pipeline 已经能处理完成,则无需使用 Logstash ,相反,如果业务处理数据场景要支持外部数据源,则选择 Logstash如果业务场景需要缓冲数据,则采用 Logstash 较优如果数据处理完成后需要输出到非 Elasticsearch 内部,则采用 Logstash在简化配置方便,如果想配置简单,则选择 Elasticsearch ingest pipeline 即可

显然,Ingest pipeline 并非 Logstatsh 的替代品,需要根据自己的业务处理数据的要求和架构设计来选择对应的技术,并非二选一,也可以同时使用,对处理不同数据采用不同的技术架构

Kibana Dev Tools 管理 PipelineIngest Pipeline

用于预处理数据,由 Elasticsearch Ingest Node 节点负责运行处理,如需要系统性能提升可单独部署 Ingest Node 节点

优点:

由 Ingest Node 节点负责处理,职责清晰更多 Processors 支持,扩展性强轻量级,覆盖了 Logstash 大多常用场景

Ingest Pipeline 是一系列处理管道,由一系列的 Processors 组成处理,先来看下 pipeline 的处理过程:

在 Kibana 中也可以创建 Ingest pipeline,在稍微章节给出示例。

常用 的 Processors 如下

更多 Pipeline Processors 参考更多;https://www.elastic.co/guide/en/elasticsearch/reference/master/processors.html

Trim

去除空格,如果是字符串类型的数组,数组中所有字符串都会被替换空格处理

Split

切分字符串,使用指定切分符,切分字符串为数组结构,只作用与字符串类型

Rename

重命名字段

Foreach

对一组数据进行相同的预处理,可以使用 Foreach

Lowercase / Uppercase

对字段进行大小写转换

Script

使用脚本语言进行数据预处理

Gsub

对字符串进行替换

Append

添加数据到数组

Set

设置字段值

Remove

移除字段

Trim

去除字符串中的空格

PUT _ingest/pipeline/trim_pipeline
 "processors": [
 "foreach": {
 "field": "message",
 "processor": {
 "trim": {
 "field": "_ingest._value"
POST _ingest/pipeline/trim_pipeline/_simulate
 "docs": [
 "_source": {
 "message": [
 "car222 ",
 " auto2222 "
 "docs" : [
 "doc" : {
 "_index" : "_index",
 "_type" : "_doc",
 "_id" : "_id",
 "_source" : {
 "message" : [
 "car222",
 "auto2222"
 "_ingest" : {
 "_value" : null,
 "timestamp" : "2021-04-28T13:19:13.542743Z"
Split / Foreach

切分字符串,使用指定切分符,切分字符串为数组结构,只作用于字符串类型

PUT _ingest/pipeline/split_pipeline
 "processors": [
 "foreach": {
 "field": "message",
 "processor": {
 "split": {
 "field": "_ingest._value",
 "separator": " "
POST _ingest/pipeline/split_pipeline/_simulate
 "docs": [
 "_source": {
 "message": [
 "car222 aaa",
 " auto2222 aaaa bbb"
#返回,可以看到 message 按照空格切分为了多个字符串数组
 "docs" : [
 "doc" : {
 "_index" : "_index",
 "_type" : "_doc",
 "_id" : "_id",
 "_source" : {
 "message" : [
 "car222",
 "aaa"
 "auto2222",
 "aaaa",
 "bbb"
 "_ingest" : {
 "_value" : null,
 "timestamp" : "2021-04-28T13:28:20.762312Z"
Rename

重命名一个字段, rename 往往和 reindex 结合使用

POST goods_info_comment_message/_bulk
{"index":{"_id":1}}
{"message":"美 国苹果 "}
{"index":{"_id":2}}
{"message":"山东 苹果 "}

本文转自网络,原文链接:https://developer.aliyun.com/article/784090
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:Painless scripting 下一篇:分页搜索

推荐图文


随机推荐