ElasticSearch Pipeline 为新增数据设置更新时间
文章目录
- 模拟测试
- 测试
- 返回结果
- 实际应用
- 创建Pipeline
- 查看创建Pipeline
- 新增数据测试
- 查看新增数据
- 创建索引时直接设置Pipeline
模拟测试
测试
POST _ingest/pipeline/_simulate
{"pipeline": {"processors": [{"set": {"field": "timestamp","value": "{{_ingest.timestamp}}"}},{"script": {"lang": "painless","source": """ ZonedDateTime zdt = ZonedDateTime.parse(ctx.timestamp); DateTimeFormatter dtf = DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss"); String datetime = zdt.format(dtf); ctx.newdate = datetime; ctx.newdate2 = System.currentTimeMillis()/1000; ctx.newdate3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());"""}}]},"docs": [{"_source": {"message": "测试"}}]
}
注意:这里可能有时区问题,慢8个小时,可临时使用 ctx.date_zsh = new Date(System.currentTimeMillis()+1000l*60*60*8); 来处理
我们使用_ingest.timestamp 与painless 多种方式设置了数据最新更新时间
返回结果
newdate2 为数据更新时间秒,newdate为格式转换后的数据,timestamp 为 _ingest.timestamp 获取到的时间
{"docs" : [{"doc" : {"_index" : "_index","_type" : "_doc","_id" : "_id","_source" : {"newdate2" : 1624848304,"message" : "测试","newdate" : "2021-06-28 02:45:04","timestamp" : "2021-06-28T02:45:04.759053131Z"},"_ingest" : {"timestamp" : "2021-06-28T02:45:04.759053131Z"}}}]
}
实际应用
创建Pipeline
PUT _ingest/pipeline/add_timestamp
{"processors": [{"set": {"field": "timestamp","value": "{{_ingest.timestamp}}"}},{"script": {"lang": "painless","source": """ ZonedDateTime zdt = ZonedDateTime.parse(ctx.timestamp); DateTimeFormatter dtf = DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss"); String datetime = zdt.format(dtf); ctx.newdate = datetime; ctx.newdate2 = System.currentTimeMillis()/1000; """}}]}
查看创建Pipeline
GET _ingest/pipeline/add_timestamp{"add_timestamp" : {"processors" : [{"set" : {"field" : "timestamp","value" : "{{_ingest.timestamp}}"}},{"script" : {"lang" : "painless","source" : """ ZonedDateTime zdt = ZonedDateTime.parse(ctx.timestamp); DateTimeFormatter dtf = DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss"); String datetime = zdt.format(dtf); ctx.newdate = datetime; ctx.newdate2 = System.currentTimeMillis()/1000; """}}]}
}
新增数据测试
PUT test_index_20210628/_doc/1?pipeline=add_timestamp
{"test":"测试数据"
}
查看新增数据
GET test_index_20210628/_doc/1 {"_index" : "test_index_20210628","_type" : "_doc","_id" : "1","_version" : 1,"_seq_no" : 0,"_primary_term" : 1,"found" : true,"_source" : {"newdate2" : 1624849340,"test" : "测试数据","newdate" : "2021-06-28 03:02:20","timestamp" : "2021-06-28T03:02:20.252887295Z"}
}
创建索引时直接设置Pipeline
我们也可以在创建索引时设置Pipeline,这时就不需要每次添加数据时指定Pipeline
# 创建索引指定pipeline
PUT test_index_20210628_02
{"settings": {"default_pipeline": "add_timestamp"}
}# 添加测试数据
PUT test_index_20210628_02/_doc/1
{"test":"测试数据"
}# 获取数据
GET test_index_20210628_02/_doc/1# 返回结果
{"_index" : "test_index_20210628_02","_type" : "_doc","_id" : "1","_version" : 1,"_seq_no" : 0,"_primary_term" : 1,"found" : true,"_source" : {"newdate2" : 1624849478,"test" : "测试数据","newdate" : "2021-06-28 03:04:38","timestamp" : "2021-06-28T03:04:38.940542643Z"}
}
个人公众号(大数据学习交流): hadoopwiki
ElasticSearch Pipeline 为新增数据设置更新时间相关推荐
- mysql 先删后增 更新_MySQL 高级操作——新增数据、更新数据、删除数据、查询数据...
新增数据 多数据插入 只要写一次insert指令,但是可以插入多条记录 语法:insert into 表名 [(字段列表)] values (值列表1),(值列表2),(值列表3); 主键冲突 主键冲 ...
- java插入或者修改数据自动更新时间字段
** 方法一:最简单 ** 在sqlyog界面打开相关的表 在要时间"更新"字段打勾 测试成功 每次修改表中数据 时间字段都会更新 ** 方法二:直接获取当前时间set到数据库 * ...
- java串口读取数据设置超时时间,附详细答案
什么是Service Mesh 作为Service Mesh技术探索和实践的先行者,全球第一个真正的Service Mesh项目Linkerd负责人.Buoyant公司创始人兼CEO William ...
- MySQL8 设置自动创建时间和自动更新时间
业务场景: 1.在数据库表中的数据,要求记录每一条新增数据的创建时间,时间格式要求明确至:年月日:时分秒. 2.在数据库表中的数据,要求记录每一条更新数据的更新时间,时间格式要求明确至:年月日:时分秒 ...
- Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间
1.引言 在实际开发中,每条数据的创建时间和修改时间,尽量不需要应用程序去记录,而由数据库获取当前时间自动记录创建时间,获取当前时间自动记录修改时间. 2.创建语句 (1)–添加CreateTime ...
- MySQL 设置 创建时间 和 更新时间
在实际应用中,我们时常会需要用到创建时间和更新时间这两个字段,下面记录一下: 第一种 : 命令行创建(推荐) CREATE TABLE `user_info` (`uid` varchar(255) ...
- 向mysql中添加更新时间_mysql 实现添加时间自动添加更新时间自动更新操作
在数据库使用中经常使用到时间字段.常用的有创建时间和更新时间. 然而在使用中想要创建时间在创建的时候自动设置为当前时间,更新时间在更新时自动更新为当前时间. 创建表 stu CREATE TABLE ...
- mysql数据库创建 时间,[mysql]设置创建时间为当前时间
SQL关键词 要注意大小写 --添加CreateTime 设置默认时间 CURRENT_TIMESTAMP ALTER TABLE `table_name` ADD COLUMN `CreateTim ...
- c# redis 如何设置过期时间_Redis Hash存储token、及设置过期时间
相信大家在很多业务场景都会遇到对数据设置过期时间,如安全认证token.短信验证码等.一般我们的解决有几种:存redis.存数据库.实时计算(如JWT),不管使用哪种方式,需求就是过期了对数据的清理. ...
最新文章
- SharePoint 2010 新体验5 - Office Web Applications
- Android应用截图和SurfaceView截图问题总结
- Apache Tomcat 文件包含漏洞(CVE-2020-1938)
- 查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
- 2017年第八届蓝桥杯C/C++ B组国赛 —— 第三题:希尔伯特曲线
- Android list转xml
- Android ANR视角InputDispatcher
- excel转PDF时,画图不分页
- 金士顿U盘不断自动连接断开解决方法
- Hudi Spark SQL源码学习总结-Create Table
- 向量积和数量积常用知识
- 史上首次,45岁边缘计算大牛蒋濛当选普渡大学校长!
- 世界知名洋酒种类及酒具的使用
- Visual studio 2017中 Javascript对于Xrm对象模型没有智能提示的解决办法
- 教学方法(学科教学法)
- DevExtreme UI框架在可视化应用程序Nvisual中的实践应用
- Windows10 1607版本锁屏聚焦黑屏问题解决办法
- pt-archive使用
- DELL 6248交换机常用配置示例
- MMD4Max(MMD4Maya)
热门文章
- mysql api 连接池_SpringBoot-整合HikariCP连接池
- 百度seo排名点击器app_百度SEO优化和百度竞价优缺点 - 百度整站排名
- python整数类型在每一台计算机上的取值范围是一样的_关于python统计一个整数列表中不同数值种类数的问题。...
- linux 生成hash值命令,linux-从给定哈希计算base64编码哈希?
- 你知道Java的四种引用类型吗
- Java的重载与覆盖,傻傻分不清!
- C++和Rust_Kotlin、Rust两个充满了骚操作的编程语言,值得一玩
- oracle命令行原理,Oracle命令行操作方式
- 【LeetCode笔记】51. N 皇后(DFS、经典题)
- oracle10g如何导出dmp,Oracle 10g dmp文件的导入导出