当前位置: 首页 > news >正文

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包含两个处理器,分别是attachmentCPU和removeCPU。

(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的执行流程是:

  1. 提取文件内容和元数据:首先,attachment处理器从content字段中提取附件的内容和相关元数据,存储在新的attachment字段中。
  2. 删除原始的Base64数据文件:接着,remove处理器会删除原始的content字段,确保只保留提取出的文本和元数据,减少存储空间。

4.应用场景

可能的Pipeline主要用于处理包含文件附件的文档,比如你有一个PDF文件或Word文档,想要提取其中的文本并进行全面的搜索或分析。典型的使用场景包括:

  • 全文搜索:您可以对提取出的文件内容进行全文搜索,而不需要保留原始的文件数据。
  • 文件元数据存储:您可以存储并查询文件的元数据(如作者、文件类型、文件大小等),用于过滤或分析。

示例:如何使用该管道

  1. 创建管道(如本例中已经完成)

    PUT /_ingest/pipeline/attachment
    {"description": "提取附件信息","processors": [{"attachment": {"field": "content","ignore_missing": true}},{"remove": {"field": "content"}}]
    }
    
  2. 上传文件并进行处理 上传一个文件的Base64编码内容并通过该Pipeline进行处理:

    POST /my_index/_doc?pipeline=attachment
    {"content": "BASE64_ENCODED_FILE_CONTENT"
    }
    
  3. 存储的文档内容:执行成功后,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处理器取出指定字段

Elasticsearchattachment处理器中,如果您不想提取文档属性中的标题(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/pdfapplication/msword等)
  • language: 文件的语言(如enfr)。
  • 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.标题

  • 类型:stringnull

  • 说明:提取出的文档标题(如果存在)。在很多

相关文章:

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中如何理解一切皆文件

根据之前的学习我们会有一些少许的疑惑&#xff0c;我们的stdin &#xff0c;stdout&#xff0c;stderr访问的是键盘显示器&#xff0c;然而键盘显示器等他们都有一个共同的特点就是他们都是外设&#xff0c;那么这些外设是怎么被看成是文件的呢&#xff1f; 看图可以知道硬件的…...

【贪心算法】(第十一篇)

目录 坏了的计算器&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 合并区间&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 坏了的计算器&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;Leet…...

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用&#xff1a;注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…...

深入解析 Jenkins 自动化任务链:三大方法实现任务间依赖与状态控制

文章目录 前言1. 使用 “Build Trigger”&#xff08;构建触发器&#xff09;2. 使用 Jenkins Pipeline 实现任务触发3. 使用 Jenkins 的 “Parameterized Trigger Plugin” 插件例子1&#xff1a;任务 A 成功后自动执行任务 B例子2&#xff1a;任务 A 成功后自动执行 Pipeline…...

无人机飞手执照培训为什么需要脱产学习?

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

PostgreSQL(十三)pgcrypto 扩展实现 AES、PGP 加密,并自定义存储过程

目录 一、pgcrypto 简介1.1 安装 pgcrypto 扩展1.2 pgcrypto 包含的函数 二、用法①&#xff1a;对称加密&#xff08;使用 AES、Blowfish 算法&#xff09;2.1 密钥2.2 密钥偏移量 三、用法②&#xff1a;PGP加解密3.1 什么是PGP算法&#xff1f;3.2 使用 GPG 生成密钥对3.3 列…...

uniapp使用webView打开的网页有缓存如何解决(APP,微信小程序)

1、给webView的url增加时间戳 this.webviewUrl ${url}?t${new Date().getTime()}; // 添加时间戳 2、在nginx服务器上添加响应头&#xff0c;告诉浏览器不可以使用缓存 location / {root /opt/webs/lcdp-client/dist;index index.html index.htm;try_files $uri $uri/ /…...

HarmonyOS 模块化设计

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

解决docker拉取readeck镜像报Error response from daemon: toomanyrequests问题

readeck 是一个内容中心&#xff0c;目前已支持中文翻译 这是本地化部署后的效果&#xff1a; 原命令为&#xff1a; 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的应用 在双屏异分辨率的显示器上 运行显示不出来

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

零代码快速开发智能体 |甘肃旅游通

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

【MATLAB源码-第187期】基于matlab的人工蜂群优化算法(ABC)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Artificial Bee Colony&#xff08;ABC&#xff09;算法是一种模仿蜜蜂觅食行为的优化算法&#xff0c;它通过模拟蜜蜂群体的社会结构和行为来解决数学优化问题。本文将详细介绍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管理

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;Spring IOC容器 &#x1f6a…...

UV灯 VS LED灯,LED美甲灯是紫外线灯吗?

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

得物App3D博物馆亮相“两博会”,正品保障助力消费体验升级

近日&#xff0c;2024中国体育文化博览会、中国体育旅游博览会&#xff08;以下简称“两博会”&#xff09;在苏州国际展览中心盛大开幕。本次展会汇聚了众多国内外体育文化、体育旅游领域的顶尖企业和品牌&#xff0c;共同展示体育产业的发展成果和最新趋势。在C展馆C21展位&a…...

rancher安装并快速部署k8s 管理集群工具

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

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置

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

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...