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 类型的列进行丰富。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Proteus仿真】【Arduino单片机】OLED液晶显示

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用IIC OLED液晶等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED液晶显示各种图形、字符、图像。 二、软件设计 /* 作者&#xff1a;嗨小…

6个机器学习可解释性框架

1、SHAP SHapley Additive explanation (SHAP)是一种解释任何机器学习模型输出的博弈论方法。它利用博弈论中的经典Shapley值及其相关扩展将最优信贷分配与局部解释联系起来. 举例&#xff1a;基于随机森林模型的心脏病患者预测分类 数据集中每个特征对模型预测的贡献由Shap…

工业CT 三维重建 及分割

目录 工业CT介绍 工业CT主要应用于以下领域&#xff1a; CT三维重建软件&#xff1a; 效果&#xff1a; 工业CT介绍 工业CT设备是基于线阵探测器的断层扫描技术&#xff0c;是一种常用的无损检测技术&#xff0c;用于获取物体内部的准确三维结构信息。它通过X射线的投射和接…

计算机网络学习笔记(五):运输层(待更新)

5.1 概述 5.1.1 TCP协议的应用场景 TCP为应用层协议提供可靠传输&#xff0c;发送端按顺序发送&#xff0c;接收端按顺序接收&#xff0c;其间发送丢包、乱序&#xff0c;TCP负责重传和排序。下面是TCP的应用场景。 多次交互&#xff1a;客户端程序和服务端程序需要多次交互才…

SQL必知会(二)-SQL查询篇(2)-排序检索数据

第3课、排序检索数据 排序数据 OEDER BY&#xff1a;排序 进行排序 1&#xff09;按单个列排序 需求&#xff1a; 以 prod_name 字段按照字母顺序排序 SELECT prod_name FROM Products ORDER BY prod_name; -- 以 prod_name 列按照字母顺序排序输出结果&#xff1a; 2&…

高等数学教材重难点题型总结(一)函数与极限

强化阶段的另一个专题&#xff0c;本专题主要总结高数课本上的经典例题与课后题&#xff0c;尤其一部分加*标的题目&#xff0c;对于冲击高分的同学来说&#xff0c;必须熟练掌握。 &#xff08;蓝色代表难点&#xff0c;红色代表重点&#xff0c;紫色代表重难点&#xff09; …

软文发布如何选择对应的媒体

企业做软文推广第一步&#xff0c;就是选择合适的媒体进行投放&#xff0c;然而许多企业不知道如何选择合适的媒体导致推广工作十分被动&#xff0c;无法取得效果&#xff0c;今天媒介盒子就来和大家分享&#xff0c;企业应该如何选择对应的媒体。 一、 媒体类型 根据软文类型…

【Python】python获取本机IP的两种方式

1.使用专用网络 通过进入网站&#xff1a;http://myip.ipip.net获取本机ip地址 代码实现&#xff1a; import requests res requests.get(http://myip.ipip.net, timeout5).text print(res) 也可以在终端cmd中用如下代码实现; curl http://myip.ipip.net 2.使用自带的socke…

光学仿真 | 仿真推动以人类视觉感知为本的汽车显示设计

如果产品设计无法使终端用户产生共鸣&#xff0c;就不会存在卓越的工程设计。您可以设计一种结构坚固的方向盘&#xff0c;但如果它被放在错误的位置&#xff0c;就无法实现其用于转向的主要目的。 同样&#xff0c;在围绕人类视觉进行设计时&#xff0c;显示器其实无需具备尽…

open clip论文阅读摘要

看下open clip论文 Learning Transferable Visual Models From Natural Language Supervision These results suggest that the aggregate supervision accessible to modern pre-training methods within web-scale collections of text surpasses that of high-quality crowd…

产品经理墨刀学习----注册页面

我们做的产品是一个校园论坛学习开发系统&#xff0c;目前才开始学习。 &#xff08;一&#xff09;流程图 &#xff08;二&#xff09;简单墨刀设计--注册页面 &#xff08;1&#xff09;有账号 &#xff08;a&#xff09;直接登录&#xff1a; &#xff08;b&#xff09;忘…

移动端性能专项测试之内存 - 进阶篇

在 Android 系统中内存作为重要的资源&#xff0c;一直是开发及测试关注的重点&#xff0c;内存不足或者内存资源滥用都会导致严重的问题。本篇文章将会从底层出发给大家介绍 OOM&#xff08;Out Of Memory&#xff09;和 LMK&#xff08;Low Memory Killer&#xff09;等内存相…

【LearnOpenGL基础入门——2】搭建第一个OpenGL窗口

目录 一.配置GLFW 二.配置GLAD 三.第一个OpenGL窗口 3.1 GLFW设置 3.2 GLAD设置 3.3 视口 3.4 输入 3.5渲染 在我们画出出色的效果之前&#xff0c;首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而&#xff0c;这些操作在每个系统上都是不一样…

改进YOLOv5:结合ICCV2023|动态蛇形卷积,构建不规则目标识别网络

🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…

【Redis】set常用命令集合间操作内部编码使用场景

文章目录 前置知识常见命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM 集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令小结内部编码测试内部编码 使用场景 前置知识 集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;在…

11.8旧有报错与修改

我将uart_done&#xff08;出问题的信号&#xff09;的变量类型设为reg了&#xff0c;也就是我是reg uart_done这个信号的&#xff0c;这样做是错误的&#xff0c;哪怕你在接收模块确实定义的是reg类型&#xff0c;但是在顶层模块的时候&#xff0c;它可以视为是一条单纯的线而…

首次分享一波

本人对单片机等电子领域感兴趣&#xff0c;已发布33篇文章&#xff0c;愿与读者们互赞互关❤️&#x1f495;&#x1f49e;&#x1f497;&#x1f493;&#x1f496; 日月同辉,与我共生_单片机基础,单片机串口通信-CSDN博客

基于显著性的无人机多光谱图像语义杂草检测与分类

Saliency-Based Semantic Weeds Detection and Classification Using UAV Multispectral Imaging(2023&#xff09; 摘要1、介绍2、相关工作2.1 监督学习2.2 半监督学习2.3 无监督学习 3、方法3.1 贡献3.2 PC/BC-DIM NEURAL NETWORK&#xff08;预测编码/有偏竞争-分裂输入调制…

[ACTF2020 新生赛]Upload 1

题目环境&#xff1a; 仍旧是文件上传漏洞 这道题和上一道大差不差、大同小异、这里不再赘述。 [极客大挑战 2019]Upload 1&#xff1a;https://blog.csdn.net/m0_73734159/article/details/134267317?spm1001.2014.3001.5501 区别在于本题需要在抓包数据里面改文件后缀&#…

Web Worker:JS多线程的伪解药?

前言 在前端开发领域&#xff0c;JavaScript 的单线程限制一直是一个难以忽视的挑战。当谈到解决JavaScript的单线程限制时&#xff0c;HTML5引入的Web Worker被普遍认为是一剂解药&#x1f48a;。同时&#xff0c;业界中大量的文章也是聚焦于讨论web worker的神奇力量。然而&…