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());
        }


    }

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

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

相关文章

冒泡排序解读

在信息爆炸的时代,数据无处不在,而如何有效地管理和处理这些数据,成为了现代计算机科学的一个重要课题。排序算法,作为数据处理的基本工具之一,对于数据的组织、搜索和分析起着至关重要的作用。今天,我们就…

淘宝销量API商品详情页原数据APP接口测试㊣

淘宝/天猫获得淘宝app商品详情原数据 API 返回值说明 item_get_app-获得淘宝app商品详情原数据 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地…

关于ES6数组详细解释

引入 es6数组有很多方法:map,find,filter返回一个新数组,every,some,Array.includes()返回的是boolean, findIndex(),indexOf(),返回的是第一次出现的索引值,includes()&#xff0…

Node2Vec论文翻译

node2vec: Scalable Feature Learning for Networks node2vec:可扩展的网络特征学习 ABSTRACT 网络中节点和边缘的预测任务需要在学习算法使用的工程特征上付出仔细的努力。最近在更广泛的表示学习领域的研究通过学习特征本身在自动化预测方面取得了重大进展。然…

测开面经(Git经典题目,Git入门)

1. GitHub是什么 a. Git是一个分布式版本控制系统,作用是跟踪、管理和协调软件开发项目中的代码更改。 b. 提供了一种有效的方式来管理代码的版本历史,以及多人协作开发的能力。 2. Git的作用有哪些 a. 版本控制:Git可以记录每次代码更改的…

C++——优先级队列

前言:这篇文章我们继续来分享一个c的容器——优先级队列。 一.理解优先级 何为优先级一说?实际上就是有顺序的意思。 优先级队列,即有顺序的队列,是一个无需我们自己进行排序操作,在数据传入时就会由容器自己排好序的…

【LAMMPS学习】七、加速性能(4)加速器包

7. 加速性能 7.1.基准测试 7.2.测试性能 7.3.通用技巧 7.4.加速器包 LAMMPS 中添加了各种pair_style、fixes、compute 和其他命令的加速版本,其运行速度通常比标准非加速版本更快。有些需要您的系统上存在适当的硬件,例如GPU 或 Intel Xeon Phi 协处…

LLM - Ruozhiba <Quality> is All You Need

目录 引言 1.COIG-CQIA Data 2.Ruozhiba Performance 3.Ruozhiba Data 4.More Ruozhiba Data 5.Some thoughts 引言 近期弱智吧 [后续以 Ruozhiba 代替] 的数据集在中文 LLM 场景的 Fine-Tuning 效果大火。众所周知,在当前 LLM 的大环境下,足够优…

代码算法训练营day14 | 理论基础、递归遍历

day14: 理论基础二叉树的分类:二叉树的种类:满二叉树完全二叉树二叉搜索树平衡二叉搜索树 二叉树的存储方式:链式存储顺序存储 二叉树的遍历方式:深度优先和广度优先遍历实现方式 二叉树的定义: 递归遍历递…

Mac钥匙串无法导出.p12证书解决方案

Mac钥匙串无法导出.p12证书解决方案 原因: 当想要将文件导出时,发现.p12的选项是灰色的不被允许 解决方法: 切换到我的证书、或者是证书的一栏,然后在导出,就是.p12的证书文件了。

LeetCode-118. 杨辉三角【数组 动态规划】

LeetCode-118. 杨辉三角【数组 动态规划】 题目描述:解题思路一:Python 动态规划解题思路二:解题思路三:0 题目描述: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&…

什么是多路复用器滤波器

本章将更深入地介绍多路复用器滤波器,以及它们如何用于各种应用中。您将了解到多路复用器如何帮助设计人员创造出更复杂的无线产品。 了解多路复用器 多路复用器是一组射频(RF)滤波器,它们组合在一起,但不会彼此加载,可以在输出之…

基于Java+SpringBoot+Vue煤矿信息管理系统(源码+文档+部署+讲解)

一.系统概述 系统根据现有的管理模块进行开发和扩展,采用面向对象的开发的思想和结构化的开发方法对煤矿信息管理的现状进行系统调查。采用结构化的分析设计,该方法要求结合一定的图表,在模块化的基础上进行系统的开发工作。在设计中采用“自…

每日OJ题_两个数组dp⑥_力扣97. 交错字符串

目录 力扣97. 交错字符串 解析代码 力扣97. 交错字符串 97. 交错字符串 难度 中等 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子…

Windows摄像头推流-RTSP

0.背景: 调试rtsp视频流时,没有网络摄像头怎么办,只需要在同一个局域网下,用windows推送rtsp流,就可以在linux进行接收。 1.下载资源包 资源包链接:https://pan.baidu.com/s/1008I7TKazE4JgFiozhtekg?pw…

深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性

在Linux网络虚拟化领域,虚拟以太网设备(veth)扮演着至关重要的角色🌐。veth是一种特殊类型的网络设备,它在Linux内核中以成对的形式存在,允许两个网络命名空间之间的通信🔗。这篇文章将从多个维…

动态路由-基于vue-admin-template

基于 vue-admin-template的动态路由 1. 拆分静态路由与动态路由 静态路由----所有人都可以访问—首页/登录/404 动态路由–有权限的人才可以访问—组织/角色/员工/权限 2. 根据用户权限添加动态路由 获取对应的权限标识(vuex中actions中把用户资料通过return 进行返回&…

基于遗传优化的SVD水印嵌入提取算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的的SVD水印嵌入提取算法。对比遗传优化前后SVD水印提取性能,并分析不同干扰情况下水印提取效果。 2.测试软件版本以及运行结果展示 MA…

通过系统防火墙,禁用同网段主机互访

要通过系统防火墙禁止同网段主机之间的互访,您可以在Windows操作系统中使用高级防火墙规则来实现。以下是在Windows环境中创建一条规则以阻止本地同一子网内的计算机互相访问的基本步骤: 对于Windows防火墙(适用于Windows 7至Windows 11&…

Postman —— postman的介绍和安装

Postman的介绍 Postman 是一款谷歌开发的接口测试工具,使API的调试与测试更加便捷。 它提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT..),附带任何数量的参数 headers postman是一款支持http协议的接口调试与…