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" : "",
"_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
Elasticsearch--Date math在索引中的使用的更多相关文章
- Elasticsearch——Date Math在索引中的用法详解
在elasticsearch中,有时会想要通过索引日期来筛选查询的数据,此时就需要用到日期数学表达式. 更多内容参考Elasticsearch翻译汇总 基于日期数学表达式的索引 模式如下: <s ...
- elasticsearch迁移数据到新索引中
因为业务原因,需要修改索引的映射的某个字段的类型,比如更改Text为Keyword. 需要如下步骤: 1).先新建索引,映射最新的映射实体 2).迁移老索引的数据到新索引中(数据较大的话,可以分批迁移 ...
- [Elasticsearch] 向已存在的索引中加入自己定义filter/analyzer
问题描写叙述 随着应用的不断升级,索引中的类型也会越来越多,新添加的类型中势必会使用到一些自己定义的Analyzer.可是通过_settings端点的更新API不能直接在已经存在的索引上使用. 在se ...
- elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)
一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...
- Elasticsearch之_default_—— 为索引添加默认映射
前篇说过,ES可以自动为文档设定索引.但是问题也来了——如果默认设置的索引不是我们想要的,该怎么办呢? 要知道ES这种搜索引擎都是以Index为实际的分区,Index里面包含了不同的类型,不同的类型是 ...
- Elasticsearch date 类型详解
引言 一直对 elasticsearch 中的 date 类型认识比较模糊,而且在使用中又比较常见,这次决定多花些时间,彻底弄懂它,希望能对用到的同学提供帮助. 注意:本文测试使用是 elastics ...
- elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
一.分词器 1. 认识分词器 1.1 Analyzer 分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...
- ElasticSearch搜索引擎在JavaWeb项目中的应用
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- ES之四、Elasticsearch集群和索引常用命令
REST API用途 elasticsearch支持多种通讯,其中包括http请求响应服务,因此通过curl命令,可以发送http请求,并得到json返回内容. ES提供了很多全面的API,常用的RE ...
随机推荐
- Linq世界走一走
什么是Linq?它是用来做什么的?怎么用? Linq的优点是不管数据源是什么,都可以统一查询.换言之,它是一种包含一套标准查询操作符的查询语言,可以对多个数据源进行查询 ⑴Linq俗称语言集成查询(L ...
- imx6 android 进入文件系统闪屏
imx6进入文件系统的时候都会闪屏,应该是framebuffer未初始化,就已经打开了背光.目前解决办法,在kenel阶段关闭背光,显示android的开机动画之后(此时framebuffer已经初始 ...
- 访问路径:https://i.cnblogs.com/posts?categoryid=925678
https://i.cnblogs.com/posts?categoryid=925678
- shell脚本编程-处理用户输入
命令行参数 命令行参数:允许在运行脚本时向命令行添加数据值 如:$ ./addem 10 30 读取参数 bash shell会将一些称为位置参数的特殊变量分配给命令行输入的所有参数,甚至包括shel ...
- nginx端口被占用解决方案
killall -9 nginx或service nginx restart(重新启动)
- 阻止PHP彩蛋信息泄漏 [转]
Easter Eggs(复活节彩蛋)外行人估计不了解这是神木玩意,彩蛋的网络解释是:用于电脑.电子游戏.电脑游戏.影碟或其他互动多媒体之中的隐藏功能或信息.PHP包含一个安全漏洞,可能导致未经授权的信 ...
- 对memcpy函数的改进
void *mymemcpy(void *dst,const void *src,size_t num) { assert((dst!=NULL)&&(src!=NULL)); int ...
- 调试 rewrite
等号后面是变量 访问http://m-test.jinlianchu.com/member/register.html?inviteCode=jlc24639 的跳转到https://wx-test ...
- mac gcc 编译错误 基础问题
mac gcc Undefined symbols for architecture x86_64 "std::__1: // Undefined symbols for architec ...
- 由浅到深讲解C#-LINQ
在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...