利用滚动索引来管理海量Elasticsearch数据

当面对大规模数据集时,单个Elasticsearch索引的数据量若持续增长,可能导致分片容量过大,进而引发查询时内存不足、甚至整个集群崩溃的问题。为避免这种情况,我们可以采用滚动索引(Rollover Index)这一策略,结合索引别名(Index Aliases)的使用,将原本写入单一索引的数据自动分散到多个索引中,实现数据的有效管理和查询优化。下面通过示例详细阐述滚动索引的创建、使用及其工作原理。

创建初始索引与索引别名

首先,我们创建一个名为log1的索引,并为其分配一个索引别名logs-all,以便后续通过别名进行数据写入和查询。

PUT /log1
{"aliases": {"logs-all": {}}
}

接下来,我们向别名logs-all中写入两条示例数据,并确保数据即时可见(通过refresh=true参数)。

PUT logs-all/_doc/1?refresh
{"visittime": "10:00:00","keywords": "[世界杯]","rank": 18,"clicknum": 13,"id": 10001,"userid": "2982199073774412","key": "10001"
}PUT logs-all/_doc/2?refresh
{"visittime": "11:00:00","keywords": "[杯]","rank": 20,"clicknum": 12,"id": 1121,"userid": "298219d9073774412","key": "2"
}

配置滚动索引

为了启用滚动索引功能,我们需要为索引别名logs-all指定滚动索引规则。这里设定以下三个滚动条件:

  • 最大年龄(max_age:索引创建至今不超过7天。
  • 最大文档数(max_docs:索引中的文档数量不超过1条。
  • 最大大小(max_size:索引主分片总大小不超过5GB。

当任意一个条件满足时,新数据将写入新索引log2

POST /logs-all/_rollover/log2
{"conditions": {"max_age":   "7d","max_docs":  1,"max_size":  "5gb"}
}

上述配置意味着,只要索引数据量达到1条记录,或主分片总大小超过5GB,或创建索引的时间长度超过7天,Elasticsearch就会自动将新的数据写入新索引log2

持续滚动与自动命名索引

随着数据不断增长,当log2的数据量达到阈值时,可以继续创建新的索引(如log3)并重复上述滚动过程。为了简化索引命名,我们可以采用具有递增序列的索引名,如log-000001。这样,当执行滚动操作时,Elasticsearch会自动根据前一个索引名递增尾数生成新索引名。

PUT /log-000001
{"aliases": {"logseries": {}}
}POST /logseries/_rollover
{"conditions": {"max_age":   "7d","max_docs":  1,"max_size":  "5gb"}
}

执行结果解读

执行滚动操作后,Elasticsearch将返回一个包含以下关键信息的响应:

{"acknowledged" : false,"shards_acknowledged" : false,"old_index" : "log-000001","new_index" : "log-000002","rolled_over" : false,"dry_run" : false,"conditions" : {"[max_size: 5gb]" : false,"[max_docs: 1]" : false,"[max_age: 7d]" : false}
}
  • acknowledgedshards_acknowledged 表示操作是否被成功确认和分片是否已确认。
  • old_indexnew_index 分别指当前正在使用的索引和即将切换到的新索引。
  • rolled_over 表示是否已完成滚动,此处为false,说明尚未触发滚动条件。
  • dry_run 说明本次是否为模拟执行,此处为false,表示实际执行了滚动检查。
  • conditions 列出了每个滚动条件及其当前状态,均为false表明当前索引尚未满足任何一个滚动条件。

总结来说,滚动索引结合索引别名的使用,为应对大规模数据集提供了有效解决方案。它允许我们将数据自动分散到多个索引中,根据预设条件动态创建新索引,确保数据规模可控,避免单个索引过大导致的性能问题。通过合理的滚动策略配置,我们可以轻松管理海量数据,同时保持Elasticsearch集群的稳定性和查询效率。

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

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

相关文章

vue 下拉框默认值显示与多值传参

1、vue下拉框介绍 <template><el-select v-model"value" placeholder"请选择"><el-optionv-for"item in options":key"item.value":label"item.label":value"item.value"></el-option>&…

使用hutool阿里云企业邮箱发送邮件和附件,包含PDF转图片base64,PDF转HTML

请务必开启阿里云服务器465 ssl邮件端口 废话不多&#xff0c;我们直接上代码。 注意&#xff1a;阿里云邮箱不支持邮件内容HTML带有URL链接&#xff0c;会被过滤和谐掉&#xff01;&#xff0c;所以邮件内容有PDF要么&#xff1a; PDF转图片base64&#xff0c;PDF转HTML&…

工具:如何在国内高速下载SRA

如何在国内高速下载SRA 下载公共测序数据&#xff0c;一般是通过在NCBI上搜索到study的Run SRA号&#xff0c;然后使用NCBI提供的prefetch下载数据&#xff0c;但因NCBI国内访问较为缓慢导致下载速度巨慢&#xff0c;因此推荐使用EBI提供的enaBrowserToolsAspera的方式从ENA下…

艾体宝案例 | 使用Redis和Spring Ai构建rag应用程序

随着AI技术的不断进步&#xff0c;开发者面临着如何有效利用现有工具和技术来加速开发过程的挑战。Redis与Spring AI的结合为Java开发者提供了一个强大的平台&#xff0c;以便快速构建并部署响应式AI应用。探索这一整合如何通过简化的开发流程&#xff0c;让开发者能够更专注于…

大核注意力 LKA | Visual Attention Network

论文名称&#xff1a;《Visual Attention Network》 论文地址&#xff1a;2202.09741 (arxiv.org) 尽管最初是为自然语言处理任务而设计的&#xff0c;但自注意力机制最近在各个计算机视觉领域迅速崭露头角。然而&#xff0c;图像的二维特性给计算机视觉中的自注意力应用带来了…

生成式人工智能AIGC技术的发展现状和未来趋势

生成式人工智能AIGC技术的发展现状和未来趋势 引言&#xff1a; 生成式人工智能&#xff08;Generative Artificial Intelligence&#xff0c;GAN&#xff09;是人工智能领域的一项重要技术&#xff0c;用于生成逼真的图像、视频和音频等内容。图形计算在游戏、虚拟现实、增强…

【Vue】组件化编程

定义 实现应用中局部功能代码和资源的集合 为什么要用组件化编程? 传统方式编写:依赖关系混乱,不好维护,且代码复用率不高 模块化编写:只关注解决js,复用js,简化js的编写与效率 组件方式编写:好维护、复用率更高、提高运行效率 在组件出现之前,我们开发基本都是用htm…

GD32E103C8T6 封装LQFP-48 GigaDevice(兆易创新) 单片机

GD32E103C8T6 是由GigaDevice&#xff08;兆易创新&#xff09;公司生产的一款基于ARM Cortex-M4内核的32位MCU&#xff08;微控制器&#xff09;。以下是GD32E103C8T6的一些主要功能和参数介绍&#xff1a; 主要功能&#xff1a; 高性能ARM Cortex-M4内核: 采用120MHz的ARM …

修复所有 bug 并不能解决所有问题

原文&#xff1a;jeffpsherman - 2024.04.08 在软件领域&#xff0c;如同在制造业&#xff0c;有些问题是由于 bug 或“特殊原因”引发的&#xff0c;而有些则是“常见原因”&#xff0c;这是由于系统设计和实现的性质所导致的。修复 bug 就是移除特殊原因&#xff0c;消除 bu…

基于SpringBoot的合家云社区物业管理平台 - 项目介绍

合家云社区物业管理平台 2.合家云需求&设计 2.1 项目概述 2.1.1 项目介绍 合家云社区物业管理平台是一个全新的 ”智慧物业解决方案“&#xff0c;是一款互联网的专业社区物业管理系统。平台通过社区资产管理、小区管理、访客管理、在线报修、意见投诉等多种功能模块&a…

指针笔试题模拟

题目一 int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; } 1*&#xff08;a1&#xff09;可以等价于a[1],即第一个打印的是数组第二个下标的元素&#xff1a;2 2 而ptr拿到的是整个数组的地…

CentOS上如何自定义开机启动服务

一&#xff1a;简单的例子 在CentOS7之后自定义开机启动服务&#xff0c;可以通过创建一个systemd服务单元文件来实现。以下是创建自定义服务并设置其开机启动的步骤&#xff1a; 1&#xff0c;编辑服务文件&#xff0c;并添加以下内容&#xff1a; [Unit] DescriptionMy cu…

MySQL慢SQL优化技术深度学习指南

引言 在现代数据驱动的应用环境中&#xff0c;MySQL作为广泛应用的关系型数据库管理系统&#xff0c;其性能直接影响着整个系统的响应速度与用户体验。随着数据规模的增长和业务复杂性的提升&#xff0c;一些SQL查询可能会逐渐演变为慢查询&#xff0c;成为系统性能瓶颈。本文旨…

Ubuntu安装中文输入法

Ubuntu默认没有中文输入法&#xff0c; 本文将安装搜狗拼音输入法。 1 安装搜狗拼音输入法 下载安装搜狗拼音输入法&#xff1a; 先去官网下载安装包&#xff0c; 然后执行安装&#xff1a; sudo dpkg -i sogoupinyin_4.0.1.2800_x86_64.deb 2 安装fcitx sudo apt install fci…

SVM中常用的核函数及适用场景

常用的核函数 核函数&#xff08;Kernel functions&#xff09;在机器学习中尤其是在支持向量机&#xff08;SVM&#xff09;中扮演着重要的角色&#xff0c;它们能够将数据映射到高维空间&#xff0c;从而解决非线性问题。以下是一些常用的核函数及其适用场景&#xff1a; 线…

大模型的幻觉---探讨及解决之道

大模型「幻觉」背景 幻觉可以说早就已经是LLM老生常谈的问题了&#xff0c;那为什么会产生这个现象该如何解决这个问题呢&#xff1f;大模型幻觉产生的背景主要涉及人类视觉系统的特性和大规模机器学习模型的复杂性。以下是对大模型幻觉产生背景的详细说明和介绍&#xff1a; …

C语言之详细讲解文件操作

什么是文件 与普通文件载体不同&#xff0c;文件是以硬盘为载体存储在计算机上的信息集合&#xff0c;文件可以是文本文档、图片、程序等等。文件通常具有点三个字母的文件扩展名&#xff0c;用于指示文件类型&#xff08;例如&#xff0c;图片文件常常以KPEG格式保存并且文件…

第5篇:创建Nios II工程之Hello_World<四>

Q&#xff1a;最后我们在DE2-115开发板上演示运行Hello_World程序。 A&#xff1a;先烧录编译Quartus硬件工程时生成的.sof文件&#xff0c;在FPGA上成功配置Nios II系统&#xff1b;然后在Nios II Eclipse窗口右键点击工程名hello_world&#xff0c;选择Run As-->Nios II …

Go语言中,如何做到数据按类别分发给特定的协程处理

在 Go 语言中&#xff0c;如果你想按类别将数据分配给特定的协程&#xff08;goroutine&#xff09;进行处理&#xff0c;可以使用几种策略。下面我将提供一些方法和示例&#xff0c;说明如何根据数据类别将任务分配给不同的协程来处理。 使用通道&#xff08;Channel&#xf…

C#利用IDbCommand实现通用数据库脚本执行程序

目录 关于 ExecuteNonQuery 数据库脚本程序的执行流程 范例运行环境 通用类的设计 引用 DAL类 实现代码 小结 关于 ExecuteNonQuery 在.net 应用中&#xff0c;在数据库中执行脚本程序是经常用到的功能&#xff0c;如数据操作&#xff08;新增、修改、删除等&#xff0…