Elasticsearch 中管道介绍
Elasticsearch 中管道
文章目录
- Elasticsearch 中管道
- 1、管道( Ingest Pipeline)
- 1.**管道描述**
- 2.**处理器(Processors)**
- (1)**`attachment`处理器**
- (2)**`remove`处理器**
- 3.**整体流程**
- 4.**应用场景**
- 示例:如何使用该管道
- 总结
- 2、如何设置`attachment`处理器取出`指定`字段
- 如何设置`attachment`处理器不取出`title`字段
- 示例:不导出`title`
- 解释:
- 其他可能提取的字段:
- 总结:
- 3、`properties`参数类型
- 1. **content**(文件内容)
- 2.**标题**
- 3. **author**(作者)
- 4. **content_type**(文件类型)
- 5. **language**(语言)
- 6.**关键词**(关键词)
- 7.**日期**(创建或修改日期)
- 8. **content_length**(内容长度)
- 9. **page_count**(页数)
- 10.**名称**(文件名)
- 11. **other_fields**(其他元数据字段)
- 总结
- 4、自定义`properties`参数类型
- **1.使用映射(Mapping)定义字段类型**
- **1.后处理(Post-Processing)**
- 5、修改 Ingest Pipeline 的步骤
- 示例:修改一个摄取管道
- 示例 1:修改描述和添加处理器
- 示例2:仅更新某个处理器
- 处理器类型
- 验证修改
- 删除 Ingest Pipeline
- 总结
- 6、 Java 客户端对管道的增、删、改、查操作
- 1.添加依赖
- 2.创建Elasticsearch客户端
- 3.增、删、改、查操作示例
- 3.1 增加管道
- 3.2 修改管道
- 3.3 删除项目
- 3.4 查询项目
- 4. 完整示例程序
- 总结
- 注意事项
1、管道( Ingest Pipeline)
请求请求PUT /_ingest/pipeline/attachment
是在Elasticsearch中创建一个Ingest Pipeline,用于处理文档中的附件(如PDF、Word、TXT等),提取出其中的文本内容和元数据,并删除原始的附件数据。具体解释如下:
1.管道描述
"description": "提取附件信息"
表明该Pipeline的目的是从上传的文件数据中提取内容和元数据。
2.处理器(Processors)
这个Pipeline包含两个处理器,分别是attachment
CPU和remove
CPU。
(1)attachment
处理器
{"attachment": {"field": "content","ignore_missing": true}
}
- 处理器:
attachment
基于Elasticsearch的Ingest Attachment Processor插件,它的作用是从指定字段中提取文件内容作用和元数据。这里指定的字段是content
,该字段通常是包含附件文件的Base64编码数据,比如PDF、Word或者TXT文件的内容。 - 内容提取:该处理器会解析
content
字段中存储的附件,并提取:- 文本内容(
attachment.content
) - 文件类型(
attachment.content_type
) - 语言(
attachment.language
) - 作者(
attachment.author
,如果文件中有的话) - 文件大小(
attachment.content_length
)等元数据
- 文本内容(
ignore_missing: true
:如果content
字段不存在或者为空,处理器不会报错,但是会忽略这个字段并继续执行。这很实用,因为文档某些可能没有附件,你不希望整个处理过程缺少因为字段而失败。
(2)remove
处理器
{"remove": {"field": "content"}
}
- 作用:该处理器会在
attachment
处理器提取完数据后,删除原始的content
字段,对Base64编码的文件数据。这样可以减少存储空间的占用,因为在提取完文本内容和元数据之后,通常不再需要保存原始的Base64数据。
3.整体流程
这个Pipeline的执行流程是:
- 提取文件内容和元数据:首先,
attachment
处理器从content
字段中提取附件的内容和相关元数据,存储在新的attachment
字段中。 - 删除原始的Base64数据文件:接着,
remove
处理器会删除原始的content
字段,确保只保留提取出的文本和元数据,减少存储空间。
4.应用场景
可能的Pipeline主要用于处理包含文件附件的文档,比如你有一个PDF文件或Word文档,想要提取其中的文本并进行全面的搜索或分析。典型的使用场景包括:
- 全文搜索:您可以对提取出的文件内容进行全文搜索,而不需要保留原始的文件数据。
- 文件元数据存储:您可以存储并查询文件的元数据(如作者、文件类型、文件大小等),用于过滤或分析。
示例:如何使用该管道
-
创建管道(如本例中已经完成)
PUT /_ingest/pipeline/attachment {"description": "提取附件信息","processors": [{"attachment": {"field": "content","ignore_missing": true}},{"remove": {"field": "content"}}] }
-
上传文件并进行处理 上传一个文件的Base64编码内容并通过该Pipeline进行处理:
POST /my_index/_doc?pipeline=attachment {"content": "BASE64_ENCODED_FILE_CONTENT" }
-
存储的文档内容:执行成功后,Elasticsearch会存储提取出的
attachment
字段(文件内容和元数据),而不会保存原始的content
字段。文档的索引可能看起来像这样:
{"_index": "my_index","_id": "1","_source": {"attachment": {"content": "This is the extracted text from the file...","content_type": "application/pdf","language": "en","author": "Author Name","content_length": 12345}} }
总结
这个Pipeline的作用是从文档中的附件(如PDF、Word、TXT文件等)提取内容和元数据,进而删除原始的Base64编码数据,以优化存储并为全文搜索等操作做好准备。
2、如何设置attachment
处理器取出指定
字段
在Elasticsearch的attachment
处理器中,如果您不想提取文档属性中的标题(title
),可以通过properties
参数来控制要提取哪些字段。**properties
**参数允许您指定只提取某些元数据字段,避免提取不需要的字段(如title
) 。
如何设置attachment
处理器不取出title
字段
您可以在attachment
处理器的配置中使用properties
参数,明确指定需要提取的字段,并排除不需要的title
字段。
示例:不导出title
PUT /_ingest/pipeline/attachment
{"description": "提取附件信息,不包括标题","processors": [{"attachment": {"field": "content","properties": ["content", "content_type", "language", "author", "content_length"],"ignore_missing": true}},{"remove": {"field": "content"}}]
}
解释:
-
properties
:该参数定义了要提取的具体字段。在示例中,properties
被设置为:
content
: 文件实际文本内容content_type
: 文件的 MIME 类型(如application/pdf
)language
: 文件语言author
: 文件的作者content_length
: 文件内容长度(字节数)
通过明确指定这些字段,attachment
处理器只会提取你需要的字段,不会提取title
字段。
其他可能提取的字段:
如果您想进一步控制其他可能的元数据字段,以下是attachment
处理器支持的常见字段列表:
content
: 文件实际文本内容content_type
: 文件类型(如application/pdf
、application/msword
等)language
: 文件的语言(如en
、fr
)。author
: 文档的作者(如果存在)。title
: 文档的标题(如果存在)。date
: 文章创建日期keywords
: 文档中可能存在的关键词。content_length
: 文件内容的字节数
总结:
通过在attachment
处理器中使用properties
参数,您可以精确控制哪些字段会被提取。如果您不需要提取文件的title
,只需要在properties
中修复即可,就像上面的例子那样明确指定所需的其他字段。
3、properties
参数类型
在Elasticsearch的Ingest Attachment Processor中,当你不指定properties
参数时,它默认会提取文件的所有可用元数据属性,如title
(标题)、author
(作者)、content_type
(文件类型)等。这些元数据会存储在生成的attachment
字段中。
来说,取出的元数据存储在不同的字段中,每个字段对应不同的元数据类型,存储的数据类型根据属性的内容取不同。以下是主要元数据属性对应其类型:
1. content(文件内容)
-
類型:
string
-
说明: 提取出文件的实际内容。
-
示例 :
"content": "This is the text extracted from the file..."
2.标题
-
类型:
string
或null
-
说明:提取出的文档标题(如果存在)。在很多
相关文章:

Elasticsearch 中管道介绍
Elasticsearch 中管道 文章目录 Elasticsearch 中管道1、管道( Ingest Pipeline)1.**管道描述**2.**处理器(Processors)**(1)**`attachment`处理器**(2)**`remove`处理器**3.**整体流程**4.**应用场景**示例:如何使用该管道总结2、如何设置`attachment`处理器取出`指定…...
将jinjia2后端传到前端的字典数据转化为json
后端代码 from flask import Flask, render_template, jsonifyapp Flask(__name__)app.route(/) def index():data {key: value, number: 123}return render_template(index.html, datadata)if __name__ __main__:app.run(debugTrue) 前端代码 使用tojson过滤器即可 <!…...

Linux中如何理解一切皆文件
根据之前的学习我们会有一些少许的疑惑,我们的stdin ,stdout,stderr访问的是键盘显示器,然而键盘显示器等他们都有一个共同的特点就是他们都是外设,那么这些外设是怎么被看成是文件的呢? 看图可以知道硬件的…...
【贪心算法】(第十一篇)
目录 坏了的计算器(medium) 题目解析 讲解算法原理 编写代码 合并区间(medium) 题目解析 讲解算法原理 编写代码 坏了的计算器(medium) 题目解析 1.题目链接:. - 力扣(Leet…...

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode
文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用:注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…...
深入解析 Jenkins 自动化任务链:三大方法实现任务间依赖与状态控制
文章目录 前言1. 使用 “Build Trigger”(构建触发器)2. 使用 Jenkins Pipeline 实现任务触发3. 使用 Jenkins 的 “Parameterized Trigger Plugin” 插件例子1:任务 A 成功后自动执行任务 B例子2:任务 A 成功后自动执行 Pipeline…...

无人机飞手执照培训为什么需要脱产学习?
无人机飞手执照培训需要脱产学习的原因主要基于以下几个方面: 一、知识体系的系统性与复杂性 无人机飞手培训涵盖的内容广泛且深入,包括无人机基础知识、飞行原理、气象学、法律法规等多个方面。这些知识体系相互关联,需要学员进行系统的学…...

PostgreSQL(十三)pgcrypto 扩展实现 AES、PGP 加密,并自定义存储过程
目录 一、pgcrypto 简介1.1 安装 pgcrypto 扩展1.2 pgcrypto 包含的函数 二、用法①:对称加密(使用 AES、Blowfish 算法)2.1 密钥2.2 密钥偏移量 三、用法②:PGP加解密3.1 什么是PGP算法?3.2 使用 GPG 生成密钥对3.3 列…...
uniapp使用webView打开的网页有缓存如何解决(APP,微信小程序)
1、给webView的url增加时间戳 this.webviewUrl ${url}?t${new Date().getTime()}; // 添加时间戳 2、在nginx服务器上添加响应头,告诉浏览器不可以使用缓存 location / {root /opt/webs/lcdp-client/dist;index index.html index.htm;try_files $uri $uri/ /…...

HarmonyOS 模块化设计
1.HarmonyOS 模块化设计 模块化设计文档 应用程序包开发与使用文档 1.1. 概述 组件化一直是移动端比较流行的开发方式,有着编译运行快,业务逻辑分明,任务划分清晰等优点,HarmonyOs组件化的使用,有利于模块之间的解…...

解决docker拉取readeck镜像报Error response from daemon: toomanyrequests问题
readeck 是一个内容中心,目前已支持中文翻译 这是本地化部署后的效果: 原命令为: docker run --rm -ti -p 8000:8000 -v readeck-data:/readeck codeberg.org/readeck/readeck:latest Unable to find image codeberg.org/readeck/readeck:la…...

duilib的应用 在双屏异分辨率的显示器上 运行显示不出来
背景:win11,duilib应用,双显示器,两台分辨率相同,分别设置不同的缩放以后,应用运行以后,程序闪一下消失或者程序还在,但是UI显示不出来。 原因 窗口风格设置不合理,所以…...

零代码快速开发智能体 |甘肃旅游通
在互联网信息爆炸的时代,寻找一处让人心动的旅游胜地往往需要花费大量的时间和精力。而今天,我要向大家介绍一款能够帮助你轻松规划甘肃之行的智能体——“甘肃旅游通”。这款智能体通过低代码开发,集合了丰富的旅游信息和个性化推荐功能&…...

【MATLAB源码-第187期】基于matlab的人工蜂群优化算法(ABC)机器人栅格路径规划,输出做短路径图和适应度曲线。
操作环境: MATLAB 2022a 1、算法描述 Artificial Bee Colony(ABC)算法是一种模仿蜜蜂觅食行为的优化算法,它通过模拟蜜蜂群体的社会结构和行为来解决数学优化问题。本文将详细介绍ABC算法的基本原理、算法流程、以及在实际应用…...
qt获取本地语言
获取本地语言 #define QSTRING_TO_UTF8(str) std::string(str.toUtf8()) enum LanguageType {kLanguageTypeChinese,kLanguageTypeTradition,kLanguageTypeEnglish };QLocale qlLanguage;QString qstrLangCode qlLanguage.languageToString(qlLanguage.language());LOG(INFO)…...

【Spring篇】Spring中的Bean管理
🧸安清h:个人主页 🎥个人专栏:【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯Spring IOC容器 Ὢ…...

UV灯 VS LED灯,LED美甲灯是紫外线灯吗?
美甲灯是使甲油胶固化的重要工具,目前最常用的美甲灯一般是UV灯、LED灯以及CCFL灯。 一、不同的灯之间到底有什么区别呢?这次让我们好好看一下 UV灯: UV灯是紫外线灯管的简称。UV灯属于热阴极荧光灯,发出UVA(长波紫…...

得物App3D博物馆亮相“两博会”,正品保障助力消费体验升级
近日,2024中国体育文化博览会、中国体育旅游博览会(以下简称“两博会”)在苏州国际展览中心盛大开幕。本次展会汇聚了众多国内外体育文化、体育旅游领域的顶尖企业和品牌,共同展示体育产业的发展成果和最新趋势。在C展馆C21展位&a…...

rancher安装并快速部署k8s 管理集群工具
主机准备 准备4台主机 3台用于k8s集群 ,1台用于rancher 每台服务器新增配置文件 vi etc/sysctl.confnet.ipv4.ip_forward 1 刷新生效 sysctl –p 安装docker 安装的时候可以去github上检索rancher看看最新版本适配那个版本的docker,这里安装23.0.1…...

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置
国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中,在语音对讲方面,NVR接入录像回放平台目前…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...