文章目录

  • 模拟测试
    • 测试
    • 返回结果
  • 实际应用
    • 创建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 为新增数据设置更新时间相关推荐

  1. mysql 先删后增 更新_MySQL 高级操作——新增数据、更新数据、删除数据、查询数据...

    新增数据 多数据插入 只要写一次insert指令,但是可以插入多条记录 语法:insert into 表名 [(字段列表)] values (值列表1),(值列表2),(值列表3); 主键冲突 主键冲 ...

  2. java插入或者修改数据自动更新时间字段

    ** 方法一:最简单 ** 在sqlyog界面打开相关的表 在要时间"更新"字段打勾 测试成功 每次修改表中数据 时间字段都会更新 ** 方法二:直接获取当前时间set到数据库 * ...

  3. java串口读取数据设置超时时间,附详细答案

    什么是Service Mesh 作为Service Mesh技术探索和实践的先行者,全球第一个真正的Service Mesh项目Linkerd负责人.Buoyant公司创始人兼CEO William ...

  4. MySQL8 设置自动创建时间和自动更新时间

    业务场景: 1.在数据库表中的数据,要求记录每一条新增数据的创建时间,时间格式要求明确至:年月日:时分秒. 2.在数据库表中的数据,要求记录每一条更新数据的更新时间,时间格式要求明确至:年月日:时分秒 ...

  5. Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间

    1.引言 在实际开发中,每条数据的创建时间和修改时间,尽量不需要应用程序去记录,而由数据库获取当前时间自动记录创建时间,获取当前时间自动记录修改时间. 2.创建语句 (1)–添加CreateTime ...

  6. MySQL 设置 创建时间 和 更新时间

    在实际应用中,我们时常会需要用到创建时间和更新时间这两个字段,下面记录一下: 第一种 : 命令行创建(推荐) CREATE TABLE `user_info` (`uid` varchar(255) ...

  7. 向mysql中添加更新时间_mysql 实现添加时间自动添加更新时间自动更新操作

    在数据库使用中经常使用到时间字段.常用的有创建时间和更新时间. 然而在使用中想要创建时间在创建的时候自动设置为当前时间,更新时间在更新时自动更新为当前时间. 创建表 stu CREATE TABLE ...

  8. mysql数据库创建 时间,[mysql]设置创建时间为当前时间

    SQL关键词 要注意大小写 --添加CreateTime 设置默认时间 CURRENT_TIMESTAMP ALTER TABLE `table_name` ADD COLUMN `CreateTim ...

  9. c# redis 如何设置过期时间_Redis Hash存储token、及设置过期时间

    相信大家在很多业务场景都会遇到对数据设置过期时间,如安全认证token.短信验证码等.一般我们的解决有几种:存redis.存数据库.实时计算(如JWT),不管使用哪种方式,需求就是过期了对数据的清理. ...

最新文章

  1. SharePoint 2010 新体验5 - Office Web Applications
  2. Android应用截图和SurfaceView截图问题总结
  3. Apache Tomcat 文件包含漏洞(CVE-2020-1938)
  4. 查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
  5. 2017年第八届蓝桥杯C/C++ B组国赛 —— 第三题:希尔伯特曲线
  6. Android list转xml
  7. Android ANR视角InputDispatcher
  8. excel转PDF时,画图不分页
  9. 金士顿U盘不断自动连接断开解决方法
  10. Hudi Spark SQL源码学习总结-Create Table
  11. 向量积和数量积常用知识
  12. 史上首次,45岁边缘计算大牛蒋濛当选普渡大学校长!
  13. 世界知名洋酒种类及酒具的使用
  14. Visual studio 2017中 Javascript对于Xrm对象模型没有智能提示的解决办法
  15. 教学方法(学科教学法)
  16. DevExtreme UI框架在可视化应用程序Nvisual中的实践应用
  17. Windows10 1607版本锁屏聚焦黑屏问题解决办法
  18. pt-archive使用
  19. DELL 6248交换机常用配置示例
  20. MMD4Max(MMD4Maya)

热门文章

  1. mysql api 连接池_SpringBoot-整合HikariCP连接池
  2. 百度seo排名点击器app_百度SEO优化和百度竞价优缺点 - 百度整站排名
  3. python整数类型在每一台计算机上的取值范围是一样的_关于python统计一个整数列表中不同数值种类数的问题。...
  4. linux 生成hash值命令,linux-从给定哈希计算base64编码哈希?
  5. 你知道Java的四种引用类型吗
  6. Java的重载与覆盖,傻傻分不清!
  7. C++和Rust_Kotlin、Rust两个充满了骚操作的编程语言,值得一玩
  8. oracle命令行原理,Oracle命令行操作方式
  9. 【LeetCode笔记】51. N 皇后(DFS、经典题)
  10. oracle10g如何导出dmp,Oracle 10g dmp文件的导入导出