Elasticsearch--Date math在索引中的使用
时间:2022-04-22
本文章向大家介绍Elasticsearch--Date math在索引中的使用,主要内容包括描述:、基于日期数学表达式的索引:、日期数学表达式的例子、索引数据的例子、查询数据的例子、参考、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
在Elasticsearch,有时要通过索引日期来筛选某段时间的数据,这时就要用到ES提供的日期数学表达式
描述:
特别在日志数据中,只是查询一段时间内的日志数据,这时就可以使用日期数学表达式,这样可以限制检索的索引数量,减少集群的负载,提高系统性能。
几乎所有的API都支持日期索引中的数学参数值。
基于日期数学表达式的索引:
<static_name{date_math_expr{date_format|time_zone}}>
其中各个字段的含义是:
static_name:索引名字的静态部分
date_math_expr:动态的日期表达式
date_format:格式化,默认是YYYY.MM.dd
time_zone:时区,默认是UTC
需要注意的是,在使用时要把索引以及日期表达式的部分放在<>
尖括号内。
日期数学表达式的例子
比如现在的时间是2024年3月22日中午12点.utc
表达式 |
表达式的值 |
---|---|
<test-{now/d}> |
test-2024.03.22 |
<test-{now/M}> |
test-2024.03.01 |
<test-{now/M{YYYY.MM}}> |
test-2024.03 |
<test-{now/M-1M{YYYY.MM}}> |
test-2024.02 |
<test-{now/d{YYYY.MM.dd|+12:00}}> |
test-2024.03.23 |
在数学日期表达式中,now就是现在的时间2016.05.09 14:11:26
- now/d,就是向一天取整,即2016.05.09 00:00:00.
- now/M,就是向一个月取整,即2016.05。01 00:00:00
它还支持加减法,比如:
- now+1h,就是2016.05.09 14:14:23
- now-1d,就是2016.05.09 14:15:04
索引数据的例子
curl -XPOST '192.168.204.32:9200/<test-{now%2FM}>/type/1?pretty' -d '{"name":"xing1",age:20}'‘
{
"_index" : "test-2016.05.01",
"_type" : "type",
"_id" : "1",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
注意:
- 1 正常的日期表达式格式为now/d,但是
/
必须经过编码也就是%2F
- 2 这里面所用到的大括号也要进行转义才行
查询数据的例子
# curl -XPOST '192.168.204.42:9200/<test-{now%2FM}>/_search?pretty' -d '{"query":{"match_all":{}}}'
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "test-2016.05.01",
"_type" : "type",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"name" : "xing1",
"age" : 20
}
} ]
}
}
几本上所有api索引参数,支持日期索引中数学参数值。
参考
1 官方文档:Date Math support in index names
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS8 网卡配置文件
- Linux加载vmlinux调试
- Linux 中删除文本中的回车字符的方法
- 详解Linux下出现permission denied的解决办法
- Linux在丢失的情况下重置密码的教程
- Linux内核宏container_of的深度剖析
- CentOS 7.3配置Nginx虚拟主机的方法步骤
- Linux下alias命令的用法详解
- Linux搭建自己Nexus私服的实现方法
- centos7系统nginx服务器下phalcon环境搭建方法详解
- Logrotate实现Catalina.out日志每俩小时切割示例
- Linux常见问题解决方案汇总
- Linux中文件/文件夹无法删除的解决方案
- GNU Parallel的具体使用
- crontab定时任务不执行的原因分析与解决方法