Elasticsearch Data Stream 数据流使用

news2024/12/23 22:08:08

本文是《Elasticsearch索引生命周期管理ILM》中数据流索引补充篇,文章地址如下:

https://mp.weixin.qq.com/s/ajhFp-xBU1dJm8a1dDdRQQ

并且在另一片Elasticsearch的进阶使用-动态模版中也提到了相关数据流索引的内容,有兴趣的可以回过头看一下,地址我也放下面

https://mp.weixin.qq.com/s/C22Zm514qq0gN7BNcnbzCQ

所以本文着重介绍下数据流索引的使用

数据流

数据流可以跨多个索引存储时间序列数据,同时提供一个用于请求的命名资源。数据流非常适合日志、指标、跟踪事件和持续生成的数据

我们可以将indexsearch请求直接提交到数据流,数据流自动将请求路由到存储流数据的索引。我们还可以使用索引生命周期管理(ILM)来管理这些索引,例如,我们可以使用ILM来将比较老旧的数据移动到更便宜的硬件设备上并删除不需要的索引。随着数据的增长,ILM策略可以降低成本和开销

数据流方案相较于其他的索引策略方案有如下几个优点

  • 索引中字段数量减少:索引只存储数据的特定子集,也就是说不需要存储大量的字段索引,占用空间减少、更利于查询。并且在展示的时候只展示个别的相关字段
  • 更精细的数据控制:文件系统日志、CPU、负载、网络等情况可以根据自己的安全策略定义自己的数据流索引,每个索引都有自己的滚动更新、是否保留和安全策略
  • 灵活:可以使用自定义命名空间对我们的服务用例或者公司单位进行有意义的划分
  • 所需的权限更少:摄取数据时只需要附加数据的权限即可

数据流命名方案

Elastic Agent使用Elastic 数据流命名方案来命名数据流,命名方案根据以下组件将数据拆分为不同的流

  • type:描述数据的类型,例如:logsmetricstracessynthetics
  • dataset:描述该数据流要在索引中摄取的数据范围,例如我们有一个进程指标数据集,其中一个字段是描述是否正在运行;另一个是磁盘I/O指标数据集,其中一个字段描述的是读取的字节数
  • namespace:用户可配置的任意分组,例如环境(devprodqa)、公司或合作企业单位。namespace的最大长度是100个字节。通过使用命名空间可以更轻松的从给定的数据源中搜索数据。我们还可以在创建用户角色时使用匹配模式来授权用户访问的数据权限

命名方案使用短线-来分割每个组件

<type>-<dataset>-<namespace>

例如我们的生产环境集成了Nginxnamespace使用proddataset使用nginx.access,类型使用logs,那么我们生成的数据流如下

logs-nginx.access-prod

后备索引(数据流的组成)

数据流由一个或多个隐藏的、自动生成的索引组成

数据流需要有匹配的索引模版,该模版配置索引支持的映射和设置

每个索引到数据流的文档都必须要包含一个字段@timestamp,映射为datedate_nanos字段类型,如果索引模版不指定@timestamp字段类型,则默认将映射为date类型的默认选项

同一个索引模版可以应用于多个数据流,如果当前索引模版已经被数据流使用,则不能被删除

读请求

当我们向数据流提交读请求时,该流会将请求路由到支持的所有索引上

写入请求

最近最新创建的索引是数据流的写入索引,数据流仅将新文档写入到该索引。哪怕我们直接指定其他的索引,其他索引也会拒绝该请求

对于限制写入的其他索引,我们也不能进行如下操作:CloneDeleteShrinkSplit

Rollover

创建数据流时,Elasticsearch会自动的为流创建一个后备索引,并且这个索引是第一个写入索引。我们可以使用ILM策略来进行管理数据流,也可以通过API的形式手动管理数据流

后备索引名称生成

一个六位数使用0填充的整数,并且滚动累积增加记数,从000001开始

当后备索引创建时,使用如下命名规则

.ds-<data-stream>-<yyyy.MM.dd>-<generation>

<yyyy.MM.dd>表示后备索引创建的日期,日期更新的代表最新的数据

使用shrinkrestore可以更改索引的名称,但是这些操作不会从数据流中删除后备索引

仅追加

数据流是仅追加数据的,专为很少更新现有数据(如果有的话)设计的。我们不能直接将更新或者删除请求直接发送到数据流,应该使用update by query或者delete by query来替代

如果我们需要删除数据,可以直接将请求发送到对应的后备索引中进行删除

但是删除更新操作频繁的话更推荐还是使用索引别名加索引模版的组合,而不是使用数据流

示例

下面是数据流索引配置ILM策略的一个demo ,有兴趣的可以自行尝试一下(数据流使用ILM管理的测试例子见文章开头索引生命周期的文章)

  • 创建ILM策略

    PUT _ilm/policy/zuiyu_policy
    {
      "policy": {
        "phases": {
          "hot": {
            "min_age": "0ms",
            "actions": {
              "rollover": {
                "max_docs": 10
              }
            }
          },
          "warm": {
            "min_age": "1m",
            "actions": {
              "allocate": {
                "require": {
                  "data": "warm"
                }
              }
            }
          },
          "cold": {
            "min_age": "2m",
            "actions": {
              "allocate": {
                "require": {
                  "data": "cold"
                }
              }
            }
          },
          "delete": {
            "min_age": "1d",
            "actions": {
              "delete": {
                "delete_searchable_snapshot": true
              }
            }
          }
        }
      }
    }
    
  • 创建索引模版

    PUT _index_template/zyds_template
    {
      "index_patterns": [
        "zyds-*"
      ],
      "data_stream": {},
      "priority": 200,
      "template": {
        "settings": {
          "number_of_shards": 3,
          "number_of_replicas": 0,
          "index.lifecycle.name": "zuiyu_policy",
          "index.routing.allocation.require.node_type": "hot"
        },
        "mappings": {
          "properties": {
            "user": {
              "type": "object"
            },
            "message": {
              "type": "keyword"
            }
          }
        }
      }
    }
    
  • 创建一个pipline添加@timestamp字段

    PUT _ingest/pipeline/add-timestamp
    {
      "processors": [
        {
          "set": {
            "field": "@timestamp",
            "value": "{{_ingest.timestamp}}"
          }
        }
      ]
    }
    
  • 创建一个数据流

    POST zyds-stream/_doc?pipeline=add-timestamp
    {
      "user": {
        "id": "zuiyu",
        "name":"鱼"
      },
      "message": "zuiyu is successful!"
    }
    

好了,结合前两篇文章的使用,数据流相关的到这就结束了,相信数据流这个概念大家也已经掌握,后面就是实操了,如果有疑问可在评论区告诉我,大家一起进步学习

参考

https://www.elastic.co/guide/en/elasticsearch/reference/8.1/data-streams.html

https://www.elastic.co/guide/en/fleet/8.1/data-streams.html

https://www.elastic.co/guide/en/elasticsearch/reference/8.1/set-up-a-data-stream.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知乎热议的 Java 面试成神笔记,下载量已过90k,面试神技.exe进程已启动

在某论坛上面对于“中国程序员数量是否已经饱和或者过剩”这个话题很火&#xff01; 今年大家都有一个共同的感受&#xff1a;工作不好找&#xff0c;薪资不理想&#xff0c;面试造火箭。 其实&#xff0c;由于不仅是因为今年受疫情影响&#xff0c;很多公司经营不下去&#xf…

Java中的类和对象(Java系列4)

目录 前言&#xff1a; 1.什么是面向对象 2.类的定义和使用 3.this引用 3.1this引用的概念 3.2this引用的特性 3.3this的使用 4.构造方法 4.1构造方法概念 4.2构造方法的特性 5.默认初始化 6.就地初始化 7.封装 8.封装扩展之包 8.1为什么对提出包的概念呢&#x…

前端开发需要会什么?先掌握这三大核心关键技术

前端工程师&#xff0c;如何创造/制作一个网站应用呢&#xff1f; 为了更好的让你理解&#xff0c;我们简单地做一个类比&#xff1a;动画制作者在创造人物的时候&#xff0c;需要从构图、着色和动画效果上入手&#xff0c;让人物有骨、有血&#xff0c;灵性生动。 而如果将一…

长安链共识模块优化中的“精益求精”

长安链在v2.3.0版本中对共识模块进行了优化&#xff0c;主要包括优化TBFT消息机制并将异步发送信息功能进行了拆分&#xff0c;独立设计了一致性引擎模块。优化后共识模块整体逻辑更清晰、共识更高效。 TBFT消息机制优化背景 在长安链的V2.3.0版本的TBFT共识算法中&#xff0…

W易NEWS login逆向分析

内容仅供参考学习 欢迎朋友们V一起交流&#xff1a; zcxl7_7 目标 网址&#xff1a;案例地址 分析 首先进行一次登录&#xff0c;获取流程 在这个流程中可以看到dl/zj/mail/l这个接口返回了新的cookie&#xff0c;可以猜测这个是登录核心&#xff1b;dl/zj/mail…

通达信接口公式怎样进行破解?

如果我们想对通达信接口的公式进行破解该怎么做呢&#xff1f;今天我们来风险一下方法&#xff0c;但是有两个前提&#xff1a; 1:不是使用winhex&#xff0c;而是使用ollydbg来破解&#xff1b; 2:只是用户公式修改密码有效。对于导入密码无效。对于系统公式密码无效&#xff…

c语言:关键字(一)

关键字一.古老的关键字—auto1.全局变量与局部变量2.auto的使用二.最快的关键字—register一.古老的关键字—auto 1.全局变量与局部变量 在花括号里定义的变量就是局部变量&#xff0c;反之就是全局变量 这里举个例子 这时我们在进行编译时会报错告诉我们y没定义 这其实就是…

redis常用数据类型以及命令详细介绍

查询redis的命令&#xff1a;http://www.redis.cn/commands.html Redis键(key) keys *查看当前库所有key (匹配&#xff1a;keys *1) exists key判断某个key是否存在 type key 查看你的key是什么类型 del key 删除指定的key数据 unlink key 根据value选择非阻塞删除 仅将keys…

计算机组成原理(二)运算方法和运算器

目录数制与编码字符和字符串的表示方法ASCII码汉字编码定点数和浮点数的表示定点数表示方法浮点数表示方法定点数和浮点数的运算定点数的运算浮点数的运算运算器的组成算数逻辑单元&#xff08;ALU&#xff09;算数单元逻辑单元内部总线运算器的基本结构数制与编码 字符和字符…

【动态规划】爬楼梯爬的不仅仅是楼梯

深度思考爬楼梯问题&#xff0c;抽取一般过程&#xff0c;目标是对其变式题也能认出并且求解 一、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; https://leetcode.cn/problems/climbin…

[附源码]Python计算机毕业设计SSM建筑工程管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

.NET 分页帮助类

一直以来&#xff0c;分页是一个非常常见的需求&#xff0c;以前也用过很多的分页控件&#xff0c;比如AspNetPager&#xff0c;现在自己参照之前用过的&#xff0c;自己写了一个非常简单实用的分页实现方法。 先来看看应用效果&#xff1a; 如图&#xff0c;定义了是前10页&…

论文投稿指南——中文核心期刊推荐(电子、通信技术)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384;&#x1f388; 核心期刊在国内的应用范围非常广&#xff0c;核心期刊发表很多是国内作者晋升中的硬性要求&#xff0c;在…

springboot基础

目录 一、springboot介绍 1、什么是SpringBoot 二、springboot入门案列 2.1、使用idea自动生成springboot工程 2.1.1、用idea自动生成springboot 2.1.2、spring程序与springboot程序对比 三、springboot启动原理 3.1、parent 3.2、starter 3.3、引导类 3.4、内嵌tomc…

3dmax 单位匹配和基本单位设置

使用3dmax打开模型&#xff0c;出现下图对话框&#xff1b; 打开文件的单位和系统的单位不匹配&#xff0c;文件的单位是米&#xff0c;系统的单位是英寸&#xff1b;有2个选择&#xff0c;重置文件的单位为系统的单位&#xff0c;采用文件自己的单位&#xff1b; 用后一个打开…

C语言第十六课:操作符详解(下)——逗号表达式、下标引用、函数调用、结构成员操作符与操作符属性

目录 前言&#xff1a; 一、逗号表达式&#xff08;exp1&#xff0c;exp2&#xff0c;exp3&#xff0c;...&#xff0c;expN&#xff09;&#xff1a; 二、下标引用、函数调用和结构成员[ ]、( )、. 、->&#xff1a; 1.下标引用操作符[ ]&#xff1a; 2.函数调用操作符( …

NoSQL之Redis配置与优化

目录 一、redis简介 1、redis的优点 2、redis的缺点 3、redis应用场景 4、redis为什么这么快 5、redis与memcached比较 二、关系数据库与非关系型数据 1、关系型数据库 2、非关系型数据库 3、关系型数据库和非关系型数据库区别 三、redis安装部署 四、redis命令工具…

一套完整的养老院人员定位解决方案包含哪些内容?

养老院人员定位解决方案是建立面向社区及养老组织的传感网系统与信息渠道&#xff0c;并在此基础上提供实时、方便、高效、低成本的、物联化、互联化、智能化的养老服务。 人口老龄化问题早已成为当今社会关注的重要问题之一。在养老院封闭的环境&#xff0c;养老院希望利用智能…

解放程序员双手——ChatGPT安装踩雷之路+使用体验

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

数据之道读书笔记-10未来已来:数据成为企业核心竞争力

数据之道读书笔记-10未来已来&#xff1a;数据成为企业核心竞争力 数字化转型不能一蹴而就&#xff0c;数据治理也不是一朝一夕之功。数字化转型带来机遇的同时&#xff0c;也给整个企业的数据治理带来了新的挑战。 基于对华为公司数字化转型的解读&#xff0c;我们建立了数据…