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

Elasticsearch:ES|QL 中的数据丰富

在之前的文章 “Elasticsearch:ES|QL 查询语言简介”,我有介绍 ES|QL 的 ENRICH 处理命令。ES|QL ENRICH 处理命令在查询时将来自一个或多个源索引的数据与 Elasticsearch 丰富索引中找到的字段值组合相结合。这个有点类似于关系数据库查询中所使用的 join。

例如,你可以使用 ENRICH 来:

  • 根据已知 IP 地址识别 Web 服务或供应商
  • 根据产品 ID 将产品信息添加到零售订单
  • 根据电子邮件地址补充联系信息

ENRICH 命令如何工作

ENRICH 命令将新列添加到表中,其中包含来自 Elasticsearch 索引的数据。 它需要一些特殊的组件:

丰富政策 - enrich policy

丰富策略是一组配置选项,用于将正确的丰富数据添加到输入表中。

丰富策略包含:

  • 将丰富数据存储为文档的一个或多个源索引的列表
  • 确定处理器如何将丰富数据与传入文档进行匹配的策略类型
  • 源索引中的匹配字段,用于匹配传入文档
  • 丰富字段,包含来自要添加到传入文档的源索引的丰富数据

创建策略后,必须执行(execute)后才能使用。 执行丰富策略使用策略源索引中的数据来创建称为丰富索引 (enrich index) 的简化系统索引。 ENRICH 命令使用此索引来匹配和丰富输入表。

源索引 - source index

存储 ENRICH 命令用于添加到输入表的丰富数据的索引。 你可以像常规 Elasticsearch 索引一样创建和管理这些索引。 你可以在丰富策略中使用多个源索引。 你还可以在多个丰富策略中使用相同的源索引。

丰富索引 - enrich index

与特定丰富策略相关的特殊系统索引。这个是由系统生成的。在我们执行完 execute 命令后,系统会生成这个索引。

直接将输入表中的行与源索引中的文档进行匹配可能会很慢并且会占用大量资源。 为了加快速度,ENRICH 命令使用丰富索引。

丰富索引包含来自源索引的丰富数据,但有一些特殊属性可以帮助简化它们:

  • 它们是系统索引,这意味着它们由 Elasticsearch 内部管理,并且仅适用于丰富处理器和 ES|QL ENRICH 命令。
  • 它们总是以 .enrich-* 开头。
  • 它们是只读的,这意味着您无法直接更改它们。
  • 它们被 force merged 以便快速检索。

创建丰富策略 - enrich policy

要开始使用 ENRICH,请按照下列步骤操作:

  1. 检查先决条件。
  2. 添加丰富的数据。
  3. 制定丰富策略。
  4. 执行丰富策略。
  5. 使用丰富策略

设置丰富策略后,你可以更新丰富数据并更新丰富策略。

重要:ENRICH 命令执行多项操作,可能会影响查询速度。

1. 前提条件

要使用丰富策略,你必须具备:

  • 针对所使用的任何索引必须具有 read 的索引权限
  • rich_user 内置角色

2. 添加丰富数据

首先,将文档添加到一个或多个源索引。 这些文档应包含你最终想要添加到传入数据中的丰富数据。

你可以使用 document 和 index API 管理源索引,就像管理常规 Elasticsearch 索引一样。

你还可以设置 Beats(例如 Filebeat)来自动发送文档并将其索引到源索引。 请参阅 Beats 入门。

3. 创建丰富策略

将丰富数据添加到源索引后,使用 create enrich policy API 或 Kibana 中的索引管理来创建丰富策略。针对英文不是很好的开发者来说,你可以阅读如下的文章:

  • Elasticsearch:如何使用 Elasticsearch ingest 节点来丰富日志和指标

  • Elasticsearch:使用 Elasticsearch ingest pipeline 丰富数据

  • Elasticsearch:enrich processor (7.5发行版新功能)

  • Elasticsearch 的新 range 丰富策略使上下文数据分析更上一层楼 - 7.16

警告:创建后,你将无法更新或更改丰富策略。 请参阅下面的更新丰富策略

4. 执行丰富策略

创建丰富策略后,你需要使用 execute enrich API 或 Kibana 中的索引管理来执行它,以创建丰富索引 - enrich index。

丰富索引包含来自策略源索引的文档。 丰富索引始终以 .enrich-* 开头,是只读的,并且强制合并 (force merged)。

警告:丰富索引只能由丰富处理器(enrich processor)或 ES|QL ENRICH 命令使用。 避免将丰富索引用于其他目的。

5. 使用丰富策略

执行策略后,你可以使用 ENRICH 命令来丰富你的数据。

以下示例使用 languages_policy 丰富策略为策略中定义的每个丰富字段添加一个新列。 使用丰富策略(enrich policy)中定义的 match_field 执行匹配,并要求输入表具有相同名称的列(本例中为 language_code)。 ENRICH 将根据匹配字段值在丰富索引中查找记录。

ROW language_code = "1"
| ENRICH languages_policy
language_code:keywordlanguage_name:keyword

1

English

默认情况下,策略中定义的每个丰富字段都会添加为一列。 要显式选择添加的丰富字段,请使用 WITH <field1>, <field2>...:

ROW a = "1"
| ENRICH languages_policy ON a WITH language_name
a:keywordlanguage_name:keyword

1

English

你可以使用 WITH new_name=<field1>重命名添加的列:

ROW a = "1"
| ENRICH languages_policy ON a WITH name = language_name
a:keywordname:keyword

1

English

如果发生名称冲突,新创建的列将覆盖现有列。

更新丰富索引 - enrich index

创建后,你无法更新文档或将其索引为丰富索引。 相反,你需要更新你的源索引并再次执行丰富策略。 这会根据更新的源索引创建一个新的丰富索引。 先前的丰富索引将通过延迟的维护作业删除。 默认情况下,每 15 分钟执行一次。

更新丰富策略

创建后,你将无法更新或更改丰富策略。 相反,你可以:

  • 创建并执行新的丰富策略。
  • 在任何正在使用的丰富处理器或 ES|QL 查询中,将以前的丰富策略替换为新的丰富策略。
  • 使用 delete enrich API 或 Kibana 中的索引管理来删除之前的丰富策略。

局限性

ES|QL ENRICH 命令仅支持匹配 (match) 类型的丰富策略。 此外,ENRICH 仅支持对 keyword 类型的列进行丰富。

相关文章:

Elasticsearch:ES|QL 中的数据丰富

在之前的文章 “Elasticsearch&#xff1a;ES|QL 查询语言简介”&#xff0c;我有介绍 ES|QL 的 ENRICH 处理命令。ES|QL ENRICH 处理命令在查询时将来自一个或多个源索引的数据与 Elasticsearch 丰富索引中找到的字段值组合相结合。这个有点类似于关系数据库查询中所使用的 jo…...

【linux编程】linux文件IO高级I/O函数介绍和代码示例

Linux文件IO高级I/O函数用法是指如何使用这些函数来实现高效和灵活的文件读写操作,它们包括以下几类: 分散读和集中写:readv和writev函数可以一次性地从一个文件描述符读取或写入多个缓冲区,而不需要多次调用read或write函数。这样可以减少系统调用的开销,提高I/O效率。存…...

jQuery获取地址栏GET参数值

jQuery获取地址栏GET参数值 封装方法&#xff1a; window.location 是获取当前页面地址 // 获取地址栏参数 function GetUrlString(name){var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var r window.location.search.substr(1).match…...

JAVA应用中线程池设置多少合适?

目录 1、机器配置&#xff1a; 2、核心线程数 3、最大线程数多少合适&#xff1f; 4、理论基础 5、测试验证 一个线程跑满一个核心的利用率 6个线程 12 个线程&#xff1a;所有核的cpu利用率都跑满 有io操作 6、计算公式 7、决定最大线程数的流程&#xff1a; 1、机器…...

.Net Core 3.1 解决数据大小限制

微软官网文档上对.NET Core3.1解决数据大小限制有详细的介绍。下面是根据自己的情况进行的总结&#xff0c;我们可以把.Core项目部署在IIS上&#xff0c;也可以利用Kestrel进行部署。这两种方式处理数据大小限制的方式不一样&#xff0c;具体如下&#xff1a; 一、部署在IIS上…...

【音视频 | opus】opus编码的Ogg封装文件详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

【微信小程序】自定义组件(一)

自定义组件 组件的创建与引用1、创建组件2、引用组件3、全局引用VS局部引用4、组件和页面的区别 样式1、组件样式隔离2、组件样式隔离的注意点3、stylelsolation的可选值 数据、方法和属性1、data数据2、methods方法3、properties4、data和properties区别5、使用setData修改pr…...

如何通过一条数字人三维动画宣传片,打造出数字文旅

越来越多虚拟人&#xff0c;以文化挖掘者的身份通过数字人三维动画宣传片&#xff0c;打通次元壁&#xff0c;助力文化传播形式创造性转化、创新性表达&#xff0c;赋予文化发展新动能。 如南方都市报民间博物馆文化探寻者“岭梅香”&#xff0c;由一艘在南宋时期失事的沉船“南…...

【MongoDB】索引 - 数组字段的多键索引

数组字段创建索引时&#xff0c;MongoDB会为数组中的每个元素创建索引键&#xff08;多键索引&#xff09;&#xff0c;多键索引支持数组字段的高效查询。 一、准备工作 这里准备一些数据 db.shop.insertMany([{_id: 1, name: "水果店1", fruits: ["apple&qu…...

2023.11.5 关于 Spring 创建 和 使用

目录 创建 Spring 项目 1.创建 Maven 项目 2.添加 Spring 依赖 将 Bean 对象存储到 Spring 容器中 创建 Bean 存储 Bean ApplicationContext 获取 Bean BeanFactory 获取 Bean ApplicationContext 和 BeanFactory 的区别 获取 Bean 的三种方式 根据 Bean id 获取…...

3D目标检测实战 | 图解KITTI数据集评价指标AP R40(附Python实现)

目录 1 准确率和召回率2 P-R曲线的绘制3 AP R11与AP R40标准4 实际案例 1 准确率和召回率 首先给出 T P TP TP、 F P FP FP、 F N FN FN、 T N TN TN的概念 真阳性 True Positive T P TP TP 预测为正(某类)且真值也为正(某类)的样本数&#xff0c;可视为 I o U > I o U t…...

制作一个ros2机器人需要学习的课本(还不全面)

1《C语言》---这个是基础200页左右 2《C》-----500-600页 3《高等数学》-----没有这个无法计算动态电路 4《电路分析》-----没有这个没法设计硬件电路 5《英语5000词汇》最少也得达到美国小学生毕业时候的词汇水平5000词汇量 6《ros1》因为ros2没有一本中文课本---有那么一…...

Qt OpenGL相机系统

文章目录 一、简介二、实现代码三、实现效果参考资料效果展示 一、简介 一直偷懒没有学习OpenGL,乘着这段有点时间重新学习一下OpenGL,做一个简单的小工具,有助于后面理解OSG。我们都知道OpenGL中存在着下面几个坐标空间:模型空间(物体空间)、世界空间、观察空间(或者称…...

英语语音识别,语言评测,语音打分实践与代码实现

项目在这&#xff1a;couldn/speech-evaluation-of-english 详细的可查看项目内的md文档...

【SpringBoot篇】SpringBoot整合Mybatis实战

&#x1f38a;专栏【SpringBoot】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f33a;Spring Boot和MyBatis的好处&#x1f33a;创建工…...

android c++ 硬编码硬解码官方demo

参考&#xff1a; https://fossies.org/linux/opencv/modules/videoio/src/cap_android_mediandk.cpp 代码&#xff1a; // This file is part of OpenCV project.// It is subject to the license terms in the LICENSE file found in the top-level directory// of this d…...

Python之Excel数据相关

Excel Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具&#xff0c;再加上成功的市场营销&#xff0c;使Excel成为最流行的个人计算机数据处理软件。在1993年&#xff0c;作为Microsof…...

Ubuntu网络IP地址一直显示127.0.0.1

问题描述&#xff1a; 终端输入ip a显示127.0.0.1&#xff0c;原来类似192.168.231.1的地址不见了。 ip a 点击网络配置&#xff08;ubuntu桌面版&#xff09;&#xff0c;发现无线网络模块看不见了 正常情况应该有wired 模块&#xff0c;就是下面标红的 解决方案&#xff1a…...

Vulnhub-DC-3 靶机复现完整过程

啰嗦两句&#xff1a; 提权之前完成是一个月前做的&#xff0c;当时在提权处出了点问题就搁置了&#xff0c;今天才完成&#xff0c;所以IP地址可能会会有变化 注意&#xff1a;后续出现的IP地址为192.168.200.55同样是靶机IP地址&#xff0c;若本文能有帮助到你的地方&#xf…...

Dubbo篇---第三篇

系列文章目录 文章目录 系列文章目录一、Dubbo 容错策略二、Dubbo 动态代理策略有哪些?三、说说 Dubbo 与 Spring Cloud 的区别?一、Dubbo 容错策略 failover cluster 模式 provider 宕机重试以后,请求会分到其他的 provider 上,默认两次,可以手动设置重试次数,建 议把写…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...