ES 大数据量按照日期分索引存储和查询

前言

  • ES 通常被用来存放各种日志数据或其他大批量数据,然后做统计。

  • 对于请求量大的系统来说,日志或其他业务数据无比庞大,需要按日期来划分索引,便于做冷热数据的迁移管理。大批量的业务数据也要根据日期来区分,提高检索效率。

  • 假设,日志数据按每日来分索引存储,索引名字格式:system_log_20240408,system_log_20240409 等来切分。查询时,使用别名system_log 或者 用多个索引联合查询。

创建索引模板

创建索引模板,索引模板主要是用来创建索引默认属性mapping和其他设置settings,以及设置模板索引规则,方便后续增加每天对应的索引

PUT _template/system_log
{"order": 0,		// 模板的权重, 多个模板的时候优先匹配用, 值越大, 权重越高"index_patterns": ["system_log_*"],	// 创建索引时,索引名称以这个为前缀时,默认使用此模板"settings": {"number_of_replicas": "1",	// 副本数量"number_of_shards": "1"	// 分片数量},"mappings":{"dynamic":"false",	//true 是默认值,自动添加新出现的字段到 mapping 中。false,不添加新出现的字段到 mapping 中,但可以在 doc 中保存新字段。"strict" 不允许出现新字段,会报错。其中嵌套结构内部支持单独配置。"properties": {		// 字段的映射"test_keyword_File": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"text": {"type": "text"},"keywordFile": {"type": "keyword"},"longFile": {"type": "long"},"date": {"type": "date","format": "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},"booleanFile": {"type": "boolean"}}},"aliases": {"system_log": {}	// 创建索引时指定的别名,很重要}
}

DSL 语句验证

查看模板

GET _template/system_log

在这里插入图片描述

插入数据会自动添加索引

这里我们指定的索引名称system_log_20240408,无此索引时会自动创建索引,创建索引时发现是以system_log_为前缀会默认使用上面的模板创建。所以索引system_log_20240408指向的别名是system_log

//增加system_log_20240408 索引,并增加一条数据
POST /system_log_20240408/_doc
{"test_keyword_File":"filename","text":"text1","keywordFile":"keywordFile","date":"2024-04-08"
}//增加system_log_20240408 索引,并增加一条数据
POST /system_log_20240409/_doc
{"test_keyword_File":"filename","text":"text1","keywordFile":"keywordFile","date":"2024-04-09"
}

查看system_log_20240408 的别名

GET system_log_20240408/_alias

在这里插入图片描述

多索引数据检索

整体别名检索

GET system_log/_search

在这里插入图片描述

多个索引,用逗号隔开

GET system_log_20240408,system_log_20240409/_search

在这里插入图片描述

索引名模糊匹配

GET system_log*/_search

在这里插入图片描述

java 验证

 @Scheduled(cron = "0 0 0 * * *") // 每天0点创建新的索引public void test1(){SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");String indexName = "system_log_" + sdf.format(new Date());//创建索引对象CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName);//发送请求CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);boolean acknowledged = createIndexResponse.isAcknowledged();System.out.println("索引操作:"+acknowledged);if (acknowledged) {System.out.println("Index " + indexName + " created successfully.");} else {System.out.println("Index " + indexName + " creation failed.");}}

插入数据和查询数据

详见这篇文章:
Elasticsearch-03-JavaApi以及springboot中操作-RestHighLevelClient

java代码多索引查询,用逗号分隔

public void test1(){//创建搜索对象SearchRequest searchRequest = new SearchRequest();searchRequest.indices("system_log_20240408","system_log_20240409");//构建查询的请求体SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();//查询所有数据-查询全部searchSourceBuilder.query(QueryBuilders.matchAllQuery());searchRequest.source(searchSourceBuilder);//发送请求SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//分析结果SearchHits hits = search.getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}}

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

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

相关文章

Java --- 类与对象

上篇内容给大家带来了Java的语句与数组的相关内容,那么本期内容比较重要,需要读者们掌握Java面向对象编程的根本,通过这篇博客来让读者浅入理解Java类的一些基本操作。 目录 一.特点: 二.成员变量: 三.访问修饰符&a…

【JavaSE】搞定String类

前言 本篇会细致讲解String类的常见用法,让小伙伴们搞定String类~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 常用的三种字符串构造 字符串长度length 字符串比较 比较 比较字符串的内容equals…

MySQL DDL 通用语法

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

libftdi1学习笔记 4 - MPSSE SPI

目录 1. 初始化 2. SCK默认电平设置 3. GPIO控制 4. spi全双工通信 4.1 MSB/LSB 4.2 分配command缓存 4.3 spi0TransferBit 4.3 spi1TransferBit 4.4 spi2TransferBit 4.5 spi3TransferBit 4.6 写命令序列 4.7 读数据 4.8 组合实际数据 5. 验证 5.1 初始化FTDI设…

短视频底层逻辑分析

短视频底层逻辑 1.迭代模型_ev 2.Douyin的本质_ev 3.Douyin的审核机制_ev 4.平台趋势_ev 5.定位_ev 6.建立用户期待_ev 7.好内容的定义_ev 8怎么做好内容_ev 9.如何做好选题_ev 10.如何快速模仿_ev 11.账号拆解的底层逻辑_ev 12选人的重要性_ev 13.内容的包装_ev 14.打造大IP的…

【中间件】ElasticSearch简介和基本操作

一、简介 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,支持各种数据类型,包括文本、数字、地理、结构化、非结构化 ,可以让你存储所有类型的数据,能够解决不断涌现出的各种用例。其构成如下: 说明&#xff1…

Python数学建模学习-PageRank算法

1-基本概念 PageRank算法是由Google创始人Larry Page在斯坦福大学时提出,又称PR,佩奇排名。主要针对网页进行排名,计算网站的重要性,优化搜索引擎的搜索结果。PR值是表示其重要性的因子。 中心思想: 数量假设&#…

创领“浆”来:三一重工特种砂浆站引领行业绿色高效新纪元

随着我国城市化进程不断加快,国家对城市建设高度关注,国务院办公厅针对城镇老旧小区基础设施匮乏、住房条件落后、环境污染严重等突出问题印发了《关于全面推进城镇老旧小区改造工作的指导意见》,各地积极响应,因此特种砂浆也迎来…

【微信取证篇】微信收藏图片存储记录思维导图

【微信取证篇】微信收藏图片存储记录思维导图 最近在测试微信收发图片和收藏的功能,发现许多有意思的地方,**微信收藏图片缓存的文件目前发现有三个地方,都是在Fav下,名称都一样,有直接原始图片,也有加密的…

2024年nodejs调用小红书最新关注(粉丝)follow接口,api接口分析2004-04-16

一、打开chrome按f12,点击右上角的“关注”按钮,抓包位置如下: (图1 follow接口) 二、follow接口分析 1、请求地址 https://edith.xiaohongshu.com/api/sns/web/v1/user/follow 2、请求方法: POST 3、请求头: :authority: edith…

telnet不是内部或外部命令也不是可运行的程序或批处理文件

出现问题 在Windows命令行运行telnet命令,出现: ‘telnet’ 不是内部或外部命令,也不是可运行的程序,或批处理文件。 问题原因 Windows系统中的telnet客户端是关闭状态。因为Win10默认没有安装telnet功能。 解决方式 将系统中…

FPGA - 以太网UDP通信(一)

一,简述以太网 以太网简介 ​以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。 ​ 以太网类型介绍 以太网是现实世界中最普遍的一种计算机网络。以太网有…

[C++][算法基础]二分图的最大匹配(匈牙利算法)

给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边。 数据保证任意一条边的两个端点都不可能在同一部分中。 请你求出二分图的最大匹配…

Intel显卡驱动导致Qt opengl 渲染YUV时拉伸窗口内存泄漏

最近在使用QOpenGLWidget做YUV视频渲染,发现在拉伸窗口的时候内存暴涨,如果窗口不动则内存不变。 可以得出结论一定是resizeGL出了问题,但是其实这里代码很简单 glViewport(0, 0, w, h); 还有就是变换矩阵计算,根本没资源建立与释…

Sublime Text下载,安装,安装插件管理器,下载汉化插件

SublimeTest官网 © Sublime Text中文网 下载安装 一路点击安装即可 安装插件管理器 管理器官网安装 - 包控制 (packagecontrol.io) 手动安装将3 位置点击网址下载 再打开SublimeTest 点击 选择第一个Browse Packages..... 将会跳转到文件夹中 进入上一个文件夹 在进入…

【读点论文】YOLOX: Exceeding YOLO Series in 2021,无锚框单阶段目标检测方案,解耦检测头的分类和回归分支,优化标签分配策略

YOLOX: Exceeding YOLO Series in 2021 Abstract 在本报告中,我们介绍了YOLO系列的一些经验改进,形成了一种新的高性能探测器—YOLOX。我们将YOLO检测器切换到无锚方式,并进行其他先进的检测技术,即去耦头和领先的标签分配策略S…

4月16号总结

java学习 网络编程 1.网络分层 网络分层是将网络通信划分为不同的逻辑层次,每一层负责特定的功能,从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI(开放系统互联)模型和TCP/IP模型。 特点和作用: 分…

origin绘图操作合集

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、图例去掉边框二、柱状图单独选中某一柱子修改颜色,柱状图中设置一个柱子的方法 提示:以下是本篇文章正文内容,下面案例可供参…

Java开发从入门到精通(二十):Java的面向对象编程OOP:IO流中的转换流、打印流、数据流、序列流、IO框架

Java大数据开发和安全开发 (一)Java的IO流文件读写1.1 转换流1.1.1 InputStreamReader字符输入转换流1.1.1 OutputStreamWriter字符输出转换流 1.2 打印流1.2.1 PrintStream打印流1.2.2 PrintWriter打印流1.2.3 PrintStream和PrintWriter的区别1.2.4 打印…