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

elasticsearch 使用enrich processor填充数据

文章目录

      • 使用 POST 请求手动插入用户数据
      • 1. 创建 Enrich Policy
        • 步骤 1.1: 创建 Enrich Policy
        • 步骤 1.2: 执行 Enrich Policy
      • 2. 创建 Ingest Pipeline
        • 步骤 2.1: 创建 Ingest Pipeline
        • 步骤 2.2: 配置 Enrich Processor 参数
      • 3. 使用 Ingest Pipeline
        • 步骤 3.1: 使用 Pipeline 进行文档索引
        • 步骤 3.2: 查询和查看结果
      • 4. 更新 Enrich Policy(如果需要)
        • 步骤 4.1: 更新 Enrich Policy
        • 步骤 4.2: 重新执行 Enrich Policy
      • 5. 清理 Enrich Policy(如果不再使用)
      • 总结

在 Elasticsearch 中使用 enrich 处理器的流程包括几个主要步骤。首先,您需要定义一个 enrich policy,然后将该策略应用到 Ingest Pipeline 中,最后在数据索引过程中使用该管道来实现数据的丰富操作。下面是一个详细的流程步骤。

使用 POST 请求手动插入用户数据

POST /users/_doc/1
{"user_id": "1234","user_name": "John Doe","email": "johndoe@example.com","age": 30,"address": "123 Elm Street"
}

1. 创建 Enrich Policy

enrich policy 定义了如何从某个源索引中提取数据,并根据特定字段将其与目标文档进行匹配。这是使用 enrich 处理器的基础。

步骤 1.1: 创建 Enrich Policy

假设我们有一个 users 索引,存储了用户的详细信息(如 user_iduser_nameemail 等),并且我们想将这些信息基于 user_id 字段丰富到其他索引中的文档。

PUT _enrich/policy/user_enrich_policy
{"match": {"indices": ["users"],  // 数据来源索引"match_field": "user_id",  // 用于匹配的字段"enrich_fields": ["user_name", "email", "age"]  // 要从源索引中获取的字段}
}

在这里:

  • indices: 源数据所在的索引(这里是 users 索引)。
  • match_field: 用于匹配的字段(这里是 user_id 字段)。
  • enrich_fields: 要从源索引中获取并丰富目标文档的字段(比如 user_nameemailage 等)。
步骤 1.2: 执行 Enrich Policy

创建了 enrich policy 后,你需要执行它,这样 Elasticsearch 就会根据 match 查询从源索引中提取数据。

POST _enrich/policy/user_enrich_policy/_execute

执行此请求后,Elasticsearch 将根据政策从 users 索引中提取数据并创建一个内存中的匹配索引。

注意:Enrich Policy 是一个异步操作,创建并执行之后,它会定期更新和同步相关的数据。

2. 创建 Ingest Pipeline

enrich 处理器是通过 Ingest Pipeline 来使用的。在这个管道中,你可以配置 enrich 处理器,它会在文档被索引时将 enrich 数据合并到目标文档中。

步骤 2.1: 创建 Ingest Pipeline

你可以创建一个使用 enrich 处理器的 Ingest Pipeline。该管道会基于文档中的 user_id 字段从 user_enrich_policy 中查找并合并信息。

PUT _ingest/pipeline/user_enrich_pipeline
{"description": "Enrich user data from users index","processors": [{"enrich": {"policy_name": "user_enrich_policy",  // 使用的 enrich policy 名称"field": "user_id",  // 用于匹配的字段名"target_field": "user_info"  // 合并到目标文档的字段名}}]
}

在这里:

  • policy_name: 指定我们创建的 user_enrich_policy
  • field: 目标文档中用来匹配的字段(在这里是 user_id)。
  • target_field: 合并后的数据将被存储在目标文档中的字段(比如 user_info)。
步骤 2.2: 配置 Enrich Processor 参数

enrich 处理器中,你还可以使用以下几个可选参数:

  • ignore_missing: 是否忽略缺失的匹配项。默认为 false,即当没有找到匹配时,会抛出错误。如果设置为 true,则会忽略没有匹配的情况,目标字段将保持为空。
  • max_matches: 如果有多个匹配项,限制合并数据的数量。默认为 1。

3. 使用 Ingest Pipeline

enrich 处理器和管道准备好后,你可以在索引文档时使用它。

步骤 3.1: 使用 Pipeline 进行文档索引

当你将文档索引到 Elasticsearch 时,可以指定要使用的 ingest pipeline,在该管道中,enrich 处理器会根据 user_id 字段从 users 索引获取并合并相关数据。

POST /my_index/_doc/1?pipeline=user_enrich_pipeline
{"user_id": "1234"  // 当前文档中包含 user_id,enrich 处理器会根据此字段进行匹配
}
步骤 3.2: 查询和查看结果

一旦文档被成功索引,你可以查询目标文档并查看 user_info 字段,里面会包含 users 索引中对应 user_id 的信息。

GET /my_index/_doc/1

假设 user_id1234,那么返回的文档可能如下:

{"_id": "1","_source": {"user_id": "1234","user_info": {"user_name": "John Doe","email": "johndoe@example.com","age": 30}}
}

在这里,user_info 字段包含了来自 users 索引的用户数据(如 user_nameemailage)。

4. 更新 Enrich Policy(如果需要)

如果你需要更新 enrich policy,可以进行相应的调整,比如添加或删除字段,修改匹配规则等。然后,重新执行 enrich policy

步骤 4.1: 更新 Enrich Policy
PUT _enrich/policy/user_enrich_policy
{"match": {"indices": ["users"],"match_field": "user_id","enrich_fields": ["user_name", "email", "age", "address"]  // 新增加了 address 字段}
}
步骤 4.2: 重新执行 Enrich Policy
POST _enrich/policy/user_enrich_policy/_execute

更新后,新的 user_info 字段将包括新的数据(例如 address)。

5. 清理 Enrich Policy(如果不再使用)

当不再需要某个 enrich policy 时,可以删除它:

DELETE _enrich/policy/user_enrich_policy

这会删除 enrich policy 和关联的匹配数据。


总结

使用 enrich 处理器的完整流程包括以下几个步骤:

  1. 创建 Enrich Policy:定义从源索引中提取数据的规则。
  2. 执行 Enrich Policy:执行政策并创建匹配数据。
  3. 创建 Ingest Pipeline:在管道中使用 enrich 处理器,将匹配的数据合并到目标文档中。
  4. 使用 Pipeline 索引数据:使用指定的管道进行文档索引。
  5. 查询数据:查询文档,查看合并后的数据。
  6. 更新和清理:根据需求更新或删除 enrich policy。

通过 enrich 处理器,您可以在索引文档时将来自其他索引的相关数据动态合并,从而减少实时查询的复杂度和延迟。

相关文章:

elasticsearch 使用enrich processor填充数据

文章目录 使用 POST 请求手动插入用户数据1. 创建 Enrich Policy步骤 1.1: 创建 Enrich Policy步骤 1.2: 执行 Enrich Policy 2. 创建 Ingest Pipeline步骤 2.1: 创建 Ingest Pipeline步骤 2.2: 配置 Enrich Processor 参数 3. 使用 Ingest Pipeline步骤 3.1: 使用 Pipeline 进…...

VMProtect:软件保护与安全的全面解决方案

在当今数字化时代,软件的安全性和保密性愈发重要。VMProtect 作为一款备受瞩目的软件保护工具,因其强大的功能和广泛的应用而成为开发者保护软件的首选方案。 VMProtect 是一款新一代的软件保护实用程序,支持多个编译器平台,包括…...

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 1.0 项目介绍 开发工具:IDEA、VScode 服务器:Tomcat, JDK 17 项目构建:maven 数据库:mysql 8.0 系统用户前台和管理…...

第十二篇:linux下socket本地套接字通讯

使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。 用途 进程间通信:本地套…...

Spring Boot 2.1.7 数据源自动加载过程详解

在 Spring Boot 中,数据源的自动配置是框架中一个关键功能,本文将以 Spring Boot 2.1.7 版本为例,详细讲解在单数据源情况下数据源是如何自动加载的。我们通过源码分析,追踪整个加载流程。 1. 自动配置类的发现 Spring Boot 使用…...

【Vue.js 3.0】provide 、inject 函数详解

在 Vue 3 中,provide 和 inject 是用于跨组件层次结构进行依赖注入的一对 API。这些 API 主要用于祖先组件和后代组件之间的数据传递,尤其是当这些组件之间没有直接的父子关系时。 1. 示例 1.1 provide provide 函数用于在祖先组件中定义一个值&#…...

JVM(Java虚拟机)的虚拟机栈

JVM(Java虚拟机)的虚拟机栈是Java程序运行时的重要组件,以下是对其的详细解析: 一、概念与功能 概念:虚拟机栈也称为Java栈,是JVM为每个线程分配的一个私有的内存区域。每个线程在创建时都会创建一个虚拟…...

Elasticsearch02-安装7.x

零、文章目录 Elasticsearch02-安装7.x 1、Windows安装Elasticsearch (1)JDK安装 Elasticsearch是基于java开发的,所以需要安装JDK。我们安装的Elasticsearch版本是7.15,对应JDK至少1.8版本以上。也可以不安装jdk,…...

iPhone恢复技巧:如何从 iPhone 恢复丢失的照片

在计算机时代,我们依靠手机来捕捉和存储珍贵的回忆。但是,如果您不小心删除或丢失了手机上的照片怎么办?这真的很令人沮丧和烦恼,不是吗?好吧,如果您在 iPhone 上丢失了照片,您不必担心&#xf…...

vba批量化调整word的图和图表标题

vba代码 将图片进行居中操作 Sub ChangePictureFormate()Dim oPara As ParagraphDim oRange As RangeDim i As LongDim beforeIsPicture As BooleanbeforesIsPicture False 确保文档中至少有图片If ActiveDocument.InlineShapes.Count 0 ThenMsgBox "没有找到图片。&qu…...

【Flutter_Web】Flutter编译Web第二篇(webview篇):flutter_inappwebview如何改造方法,变成web之后数据如何交互

前言 欢迎来到第二篇文章,这也是第二个难题,就是原有的移动端本身一些页面H5的形式去呈现(webview),例如某些需要动态更换内容的页面,某些活动页面、支付页面,不仅仅做页面呈现,还包…...

【C语言的奥秘11】指针知识点总结(续)

目录 一、指针的运算 1、指针与整数相加减 2、指针-指针&#xff08;地址-地址&#xff09; 3、指针的关系运算 六、指针和数组 七、二级指针 八、指针数组 一、指针的运算 1、指针与整数相加减 看一下下面的代码&#xff1a; #include<stdio.h> int my_strlen(c…...

excel 列名是数据表 的字段名 ,单元格的值 是数据表对应字段的值,生成sql插入语句

在 Excel 中&#xff0c;按 Alt F11 打开 VBA 编辑器。在菜单栏选择 插入 -> 模块&#xff0c;在新模块中粘贴以下代码。 VBA 代码 Sub GenerateSQLInsertStatementsToFile()Dim ws As WorksheetDim lastRow As Long, lastCol As Long, i As Long, j As LongDim sql As S…...

AI Agent与MEME:技术与文化融合驱动Web3创新

AI Agent如何引领Web3新时代&#xff1f; 随着Web3与区块链技术的迅速发展&#xff0c;AI Agent作为人工智能与区块链的交汇点&#xff0c;正在逐步成为推动去中心化生态的重要力量。同时&#xff0c;MEME文化凭借其强大的社区驱动力和文化渗透力&#xff0c;在链上生态中扮演着…...

IO的入门

目录 1.IO概述1.1流的分类 2.字符流2.1 案例 1.IO概述 IO&#xff08;Input/Output&#xff09;:输入和输出&#xff0c;指的是某个设备或环境进行数据的输入或者输出。例如&#xff1a;键盘的输入&#xff0c;再比如显示器就是输出设备&#xff0c;输出图像。 对于java来说输…...

构建一个rust生产应用读书笔记四(实战1)

我们需要从访客那里收集哪些信息&#xff0c;以便将其登记为电子邮件通讯的订阅者&#xff1f; 电子邮件地址&#xff1a;这是最基本的要求&#xff0c;因为我们需要通过电子邮件地址向订阅者发送内容。姓名&#xff1a;虽然这不是强制性的&#xff0c;但我们希望收集一个名字…...

SpringCloudAlibaba | Sentinel从基础到进阶

一、Sentinel简介 Sentinel是SpringCloudAlibaba的一个组件&#xff0c;主要用于解决微服务架构中的高可用性和稳定性问题&#xff08;雪崩问题&#xff09;。 常见的使用场景有&#xff1a; 流量控制舱壁模式&#xff08;线程隔离&#xff09;超时处理熔断降级 二、流量控…...

算法刷题Day18: BM41 输出二叉树的右视图

题目链接 描述 思路&#xff1a; 递归构造二叉树在Day15有讲到。复习一下&#xff0c;就是使用递归构建左右子树。将中序和前序一分为二。 接下来是找出每一层的最右边的节点&#xff0c;可以利用队列层次遍历。 利用队列长度记录当前层有多少个节点&#xff0c;每次从队列里…...

【信息系统项目管理师-论文真题】2015下半年论文详解(包括解题思路和写作要点)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论题一:大项目或多项目的成本管理解题思路写作要点论题二:项目的采购管理解题思路写作要点论题一:大项目或多项目的成本管理 随着移动互联网、物联网、云计算、大数据等新一代信息技术的广泛应用,我国目前…...

Windows如何安装go环境,离线安装beego

一、安装go 1、下载go All releases - The Go Programming Language 通过网盘分享的文件&#xff1a;分享的文件 链接: https://pan.baidu.com/s/1MCbo3k3otSoVdmIR4mpPiQ 提取码: hxgf 下载amd64.zip文件&#xff0c;然后解压到指定的路径 2、配置环境变量 需要新建两个环境…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...