【Elasticsearch】 Ingest Pipeline `processors`属性详解

在Elasticsearch中,Ingest Pipeline 的 `processors` 属性是一个数组,包含一个或多个处理器(processors)。每个处理器定义了一个数据处理步骤,可以在数据索引之前对数据进行预处理或富化。以下是对 `processors` 属性中常见处理器的详细说明:

 

 

### 常见处理器

 

1. **`set`**:

   - **描述**: 设置或更新文档中的字段值。

   - **参数**:

     - `field`: 要设置的字段名称。

     - `value`: 要设置的值。

     - `if` (可选): 条件表达式,只有当条件为真时才执行处理器。

   - **示例**:

     ```json

     {

       "set": {

         "field": "status",

         "value": "processed"

       }

     }

     ```

 

2. **`remove`**:

   - **描述**: 删除文档中的字段。

   - **参数**:

     - `field`: 要删除的字段名称。

     - `if` (可选): 条件表达式,只有当条件为真时才执行处理器。

   - **示例**:

     ```json

     {

       "remove": {

         "field": "temp_field"

       }

     }

     ```

 

3. **`rename`**:

   - **描述**: 重命名文档中的字段。

   - **参数**:

     - `field`: 当前字段名称。

     - `target_field`: 新字段名称。

     - `ignore_missing` (可选): 如果为 `true`,则在字段不存在时不抛出错误。

   - **示例**:

     ```json

     {

       "rename": {

         "field": "old_field",

         "target_field": "new_field"

       }

     }

     ```

 

4. **`script`**:

   - **描述**: 使用Painless脚本对文档进行处理。

   - **参数**:

     - `source`: Painless脚本代码。

     - `lang` (可选): 脚本语言,默认为 `painless`。

     - `params` (可选): 脚本参数。

   - **示例**:

     ```json

     {

       "script": {

         "source": "ctx._source.count++",

         "params": {

           "increment": 1

         }

       }

     }

     ```

 

5. **`inference`**:

   - **描述**: 使用预训练的机器学习模型对文档进行推理。

   - **参数**:

     - `model_id`: 预训练模型的ID。

     - `target_field`: 存储推理结果的字段名称。

     - `inference_config` (可选): 推理配置。

   - **示例**:

     ```json

     {

       "inference": {

         "model_id": "my_word_embedding_model",

         "target_field": "embedding",

         "inference_config": {

           "natural_language_inference": {

             "results_field": "embedding"

           }

         }

       }

     }

     ```

 

6. **`query_vector_builder`**:

   - **描述**: 生成查询向量。

   - **参数**:

     - `field`: 输入字段名称。

     - `target_field`: 存储生成的查询向量的字段名称。

   - **示例**:

     ```json

     {

       "query_vector_builder": {

         "field": "text",

         "target_field": "query_vector"

       }

     }

     ```

 

7. **`date`**:

   - **描述**: 将字符串转换为日期。

   - **参数**:

     - `field`: 要转换的字段名称。

     - `target_field` (可选): 存储转换后的日期的字段名称。

     - `formats`: 日期格式列表。

   - **示例**:

     ```json

     {

       "date": {

         "field": "timestamp",

         "target_field": "date",

         "formats": ["yyyy-MM-dd'T'HH:mm:ssZ", "epoch_millis"]

       }

     }

     ```

 

8. **`grok`**:

   - **描述**: 使用Grok模式解析文本字段。

   - **参数**:

     - `field`: 要解析的字段名称。

     - `patterns`: Grok模式列表。

     - `target_field` (可选): 存储解析结果的字段名称。

   - **示例**:

     ```json

     {

       "grok": {

         "field": "log_message",

         "patterns": ["%{COMBINEDAPACHELOG}"]

       }

     }

     ```

 

9. **`append`**:

   - **描述**: 将值追加到数组字段中。

   - **参数**:

     - `field`: 要追加值的字段名称。

     - `value`: 要追加的值。

   - **示例**:

     ```json

     {

       "append": {

         "field": "tags",

         "value": "new_tag"

       }

     }

     ```

 

10. **`convert`**:

    - **描述**: 将字段值转换为指定的数据类型。

    - **参数**:

      - `field`: 要转换的字段名称。

      - `target_field` (可选): 存储转换后值的字段名称。

      - `type`: 目标数据类型(如 `string`, `integer`, `float`, `boolean`)。

    - **示例**:

      ```json

      {

        "convert": {

          "field": "age",

          "type": "integer"

        }

      }

      ```

 

### 示例 Ingest Pipeline

 

以下是一个示例 Ingest Pipeline,展示了如何使用多个处理器:

 

```json

PUT _ingest/pipeline/example_pipeline

{

  "description": "Example pipeline with multiple processors",

  "processors": [

    {

      "set": {

        "field": "status",

        "value": "processed"

      }

    },

    {

      "remove": {

        "field": "temp_field"

      }

    },

    {

      "rename": {

        "field": "old_field",

        "target_field": "new_field"

      }

    },

    {

      "script": {

        "source": "ctx._source.count++"

      }

    },

    {

      "inference": {

      "model_id": "my_word_embedding_model",

      "target_field": "embedding"

    }

    },

    {

      "query_vector_builder": {

        "field": "text",

        "target_field": "query_vector"

      }

    },

    {

      "date": {

        "field": "timestamp",

        "target_field": "date",

        "formats": ["yyyy-MM-dd'T'HH:mm:ssZ", "epoch_millis"]

      }

    },

    {

      "grok": {

        "field": "log_message",

        "patterns": ["%{COMBINEDAPACHELOG}"]

      }

    },

    {

      "append": {

        "field": "tags",

        "value": "new_tag"

      }

    },

    {

      "convert": {

        "field": "age",

        "type": "integer"

      }

    }

  ]

}

```

 

### 使用 Ingest Pipeline

 

在索引数据时,指定使用创建的 Ingest Pipeline:

 

```json

POST my_index/_doc?pipeline=example_pipeline

{

  "text": "example text",

  "old_field": "some value",

  "temp_field": "temporary value",

  "timestamp": "2023-10-01T12:34:56Z",

  "log_message": "127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 200 2326",

  "age": "25"

}

```

 

### 验证结果

 

你可以通过查询索引来验证数据是否正确处理:

 

```json

GET my_index/_search

{

  "query": {

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5416.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python转转商超书籍信息爬虫

1基本理论 1.1概念体系 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以按照我们设置的规则自动化爬取网络上的信息,这些规则被称为爬虫算法。是一种自动化程序,用于从互联网上抓取数据。爬虫通过模拟浏览器的行为,访问网页并…

Ext2 文件系统:数字世界的基石,深度解码超时空存储魔法

本篇博主将带大家深入底层探秘系统是如何与磁盘进行相互交流的,配合精美配图,细节讲解来带大家深入探究(注:本篇文章建议了解磁盘内部物理结果组成及设计再进行阅读)。 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C…

postman的使用

Postman是Restful API的测试工具。简单来讲是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大、使用简单。通常无论是开发人员进行接口调试,还是测试人员做接口测试,postman通常都是首选工具。 注:作为开发人员对于…

模块化架构与微服务架构,哪种更适合桌面软件开发?

前言 在现代软件开发中,架构设计扮演着至关重要的角色。两种常见的架构设计方法是模块化架构与微服务架构。它们各自有独特的优势和适用场景,尤其在C#桌面软件开发领域,模块化架构往往更加具有实践性。本文将对这两种架构进行对比&#xff0…

工程上LabVIEW常用的控制算法有哪些

在工程应用中,LabVIEW常用的控制算法有很多,它们广泛应用于自动化、过程控制、机器人、测试测量等领域。以下是一些常见的控制算法: 1. PID 控制 用途:PID(比例-积分-微分)控制是最常用的反馈控制算法&…

nuxt3项目打包部署到服务器后配置端口号和开启https

nuxt3打包后的项目部署相对于一般vite打包的静态文件部署要稍微麻烦一些,还有一个主要的问题是开发环境配置的.env环境变量在打包后部署时获取不到,具体的解决方案可以参考我之前文章 nuxt3项目打包后获取.env设置的环境变量无效的解决办法。 这里使用的…

ui文件转py程序的工具

源博客连接: PyCharm中利用外部工具uic转成的py文件,里面全是C代码,并非python类型的代码,导致大量报错。。。_pyside6-uic为什么把ui转为了c-CSDN博客 如果想把ui文件转为py文件,首先设置pycharm的外部工具&#xf…

c++学习第七天

创作过程中难免有不足&#xff0c;若您发现本文内容有误&#xff0c;恳请不吝赐教。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考。 一、const成员函数 //Date.h#pragma once#include<iostream> using namespace std;class Date { public:Date…

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢&#xff1f; 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分&#xff1a; 4.项目…

Qt中的connect函数

1. 介绍 connect函数是Qobject类提供的静态成员函数&#xff0c;这个Qobject类是Qt中所有类的祖宗类&#xff0c;这个机制类似于JAVE中同样也是有一个Object祖宗类&#xff0c;QWidget类属于Qobject类的子类&#xff0c;所以包括QPushButton这些控件等等&#xff0c;都可以使用…

UE5 开启“Python Remote Execution“

demo 代码 remote_execution.py 远程调用UE5 python代码-CSDN博客 在启用 Unreal Engine 5&#xff08;UE5&#xff09;的“Python 远程执行”功能后&#xff0c;UE5 会启动一个 UDP 组播套接字服务&#xff0c;以监听来自外部应用程序的 Python 命令。 具体行为如下&#xf…

LabVIEW太赫兹二维扫描成像系统

使用LabVIEW设计太赫兹二维扫描成像系统。通过LabVIEW平台开发&#xff0c;结合硬件如太赫兹源、平移台、锁相放大器等&#xff0c;实现了高效、精准的成像功能。系统采用蛇形扫描方式&#xff0c;通过动态调整扫描参数&#xff0c;达到优化成像质量的目的。 ​ 项目背景 在非…

【wiki知识库】08.添加用户登录功能--后端SpringBoot部分

目录 一、今日目标? 二、SpringBoot后端实现 2.1 新增UserLoginParam 2.2 修改UserController 2.3 UserServiceImpl代码 2.4 创建用户上下文工具类 2.5?通过token校验用户&#xff08;重要&#xff09; 2.6 创建WebMvcConfig 2.7 用户权限校验拦截器 一、今日目标 上…

以 RFID 为钥,开启民兵装备管理的科技之门

民兵配备的武器及装备涵盖了各式武器、弹药及军事技术设备&#xff0c;其管理的优良直接决定了民兵的作战效能。鉴于民兵装备普遍面临老化、维护支援不充分等问题&#xff0c;迫切需要迅速建立完善的民兵装备管理新体系。这一转变将推动民兵装备由数量扩张转向质量提升&#xf…

2025-1-21 Newstar CTF web week1 wp

文章目录 week1headach3会赢吗智械危机 week1 headach3 根据提示&#xff0c;在页面的请求头里找到flag flag{You_Ar3_R3Ally_A_9ooD_d0ctor} 会赢吗 打开控制台&#xff0c;拿到第一部分flag 将地址栏改为提示&#xff0c;去到下一关 控制台调用函数&#xff0c;得到flag …

C语言程序设计十大排序—选择排序

文章目录 1.概念✅2.选择排序&#x1f388;3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅5.十大排序 1.概念✅ 排序是数据处理的基本操作之一&#xff0c;每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法&#xff0c;排序后的数据更易于处理和查找。在…

(三)线性代数之二阶和三阶行列式详解

在前端开发中&#xff0c;尤其是在WebGL、图形渲染、或是与地图、模型计算相关的应用场景里&#xff0c;行列式的概念常常在计算变换矩阵、进行坐标变换或进行图形学算法时被使用。理解二阶和三阶行列式对于理解矩阵运算、旋转、平移等操作至关重要。下面&#xff0c;我将结合具…

通过docker overlay2目录名查找容器名和容器ID

参考&#xff1a;https://blog.csdn.net/beck_li/article/details/142059298 有时候经常会有个别容器占用磁盘空间特别大&#xff0c;这个时候就需要通过docker overlay2 日录名查找对应容器名. 1.首先进入到 /var/lib/docker/overlay2 目录下 #cd /var/lib/docker/overlay2 …

2025年入职/转行网络安全,该如何规划?网络安全职业规划

网络安全是一个日益增长的行业&#xff0c;对于打算进入或转行进入该领域的人来说&#xff0c;制定一个清晰且系统的职业规划非常重要。2025年&#xff0c;网络安全领域将继续发展并面临新的挑战&#xff0c;包括不断变化的技术、法规要求以及日益复杂的威胁环境。以下是一个关…

Vue平台开发三——项目管理页面

前言 对于多个项目的使用&#xff0c;可能需要进行项目切换管理&#xff0c;所以这里创建一个项目管理页面&#xff0c;登录成功后跳转这个页面&#xff0c;进行选择项目&#xff0c;再进入Home页面展示对应项目的内容。 一、实现效果图预览 二、页面内容 功能1、项目列表展…