Es索引中时间字段是字符串Range查询的正确姿势

文章目录

    • @[toc]
  • 1. 问题
  • 2. Es索引的mapping模式
    • 2.1 dynamic动态宽松模式(动态映射)
    • 2.2 strict严格模式(静态映射)
  • 3. text类型和keyword类型的区别
    • 3.1 text类型
    • 3.2 keyword类型
  • 4.正确姿势
  • 5. 总结

1. 问题

    由于之前搞了一个使用flink-cdc将mysql表中的数据同步到es的索引中,例子中数据库中的orders表中的order_date的字段类型是datetime类型,flink-sql建表orders、enriched_orders中的order_date 字段是TIMESTAMP(0)类型,同步到es的enriched_orders索引中的order_date的类型是:

查询索引的mapping结构语句:
GET enriched_orders/_mapping
enriched_orders索引的order_date字段类型如下:
"order_date" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}}

    数据被同步到enriched_orders索引的时候不需要我们创建索引,该索引会自动创建,自动创建的也是可以使用的,如果业务的数据模型有特殊格式要求,可以自己重新设计下数据模型,然后自己先把索引创建好,然后使用cdc同步数据到索引中,需要注意的就是三边的字段的类型的对应,如果字段类型不对应估计是会报错的,这种方式我还没有试过的,哪哈具体的业务上在试下看看,然后就写了下面一个语句根据这个order_date字段查询一个时间范围的数据,DSL语句如下:

GET enriched_orders/_search
{"query": {"range": {"order_date": {"gte": "2020-07-30 10:00:00","lte": "2020-07-31 10:38:11"}}}
}

    这种方式居然查不到数据,这也是有点奇葩的,这个问题是分词的问题。

2. Es索引的mapping模式

Elasticsearch 索引映射类型及mapping属性详解

https://www.knowledgedict.com/tutorial/elasticsearch-index-mapping.html

2.1 dynamic动态宽松模式(动态映射)

    Es默认索引的mapping是 dynamic:动态宽松模式,也就是随便写,数据自动冗余,es会根据你写入索引的字段数据进行自动推断该是什么类型,这种方式会导致:字段爆炸(字段膨胀)这种操作在有的时候是很危险的,也就是可以在mapping里面随意加字段,一个不小心随意加了字段可能就导致业务代码报错了,这种方式默认大小为:

index.mapping.total_fields.limit:1000  # dynamic 这种方式最多加到1000字段的限制,想超过1000可以修改这个参数

    可以加上dynamic:"false"的限制,dynamic 设置为 false 后,新来的非 mapping 预设字段数据可以写入,但是:不能被检索,仅支持 Get 获取文档的方式通过 _source 查看详情内容。

2.2 strict严格模式(静态映射)

    也就是当你在写入数据的时候,写入数据格式中的字段不是mapping中定义限定好的,那么将会写入失败,这个就不可以随随便便写入数据了,数据更严谨,一般还是推荐这种方式,先设计数据模型及使用了恰当的类型又使用了更低的存储更切合业务的需求,所以这个还是有必要设计一下的。

3. text类型和keyword类型的区别

3.1 text类型

  1. 会分词,然后进行索引
  2. 支持模糊、精确查询
  3. 不支持聚合
  4. 分词器默认standard ,对于中文来说就是按字分词
  5. 支持fields属性,可以在fields中添加keyword子类型,以实现精确检索

3.2 keyword类型

  1. 不进行分词,直接索引
  2. 支持模糊、精确查询
  3. 支持聚合
  4. 支持按字数建立索引,以便节约索引空间

4.正确姿势

GET enriched_orders/_search
{"query": {"range": {"order_date.keyword": {"gte": "2020-07-30 10:00:00","lte": "2020-07-31 10:38:11"}}}
}GET enriched_orders/_search
{"query": {"range": {"order_date.keyword": {"from": "2020-07-30 10:00:00","to": "2020-07-31 10:38:11"}}}
}

    以上的查询语句都是在kibban可视化里执行的:

图片

5. 总结

    到此我的分享就已经结束了,希望能给你带来帮助,请一键三连,么么哒!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

panda3d 模型转换命令复习学习

在此学习了把maya模型转换为panda3d的egg格式; 在Panda3d中转换Maya模型为egg格式并使用pview查看_panda3d egg文件浏览器_bcbobo21cn的博客-CSDN博客 下面继续看一下模型转换命令;列出带 egg 字符串的命令; 先复习一下,可以把m…

数据库—概念学习

文章目录 总览全局数据库数据库管理系统DBA数据库管理员数据库系统的体系结构三层模式两级映像独立性 数据模型数据库技术的产生与发展相关定义 总览全局 整个数据库系统所包含为: 数据库(数据的集合叫做一个库)数据库管理系统数据库应用系…

【azure】office 365邮箱auth2认证之spa的刷新令牌过期后如何处理

参考:https://learn.microsoft.com/zh-cn/azure/active-directory/develop/refresh-tokens 官方对令牌和刷新令牌生命周期的描述 已失效的刷新令牌如何获取新的令牌和刷新令牌 /*** office 365使用失效的刷新令牌和应用程序的相关信息来获取新的访问令牌和刷新令牌…

kafka入门,数据去重(九)

数据传递语义 至少一次:ACK级别设置为-1分区副本大于等于2ISR里应答的最小副本数量大于等于2 最多一次:ACK级别设置为0 总结: At Least Once:可以保证数据不丢失,但是不能保证数据不重复 At Most Once:可以…

软件测试面试-银行篇

今天参加了一场比较正式的面试,汇丰银行的视频面试。在这里把面试的流程记录一下,结果还不确定,但是面试也是自我学习和成长的过程,所以记录下来大家也可以互相探讨一下。 请你做一下自我介绍?(汇丰要求英…

Stable Diffusion 对图像进行风格化

风格化是基于现有图像转换成另一种风格的操作方法,通常应用于img2img中,将文字提示中特定的新风格应用于原图像上进行修改。在这个过程中并非使用随机的潜在状态,而是采用原始图像去编码初始潜在状态。在此基础上通过加入少量的随机性&#x…

自己动手写C语言float浮点数转换字符串的函数

最近在项目中用到了holtek厂商的HT45F24A和BA45F5650两款单片机。 用的开发工具是HT-IDE3000,烧录软件是HOPE3000。 这两款单片机都是8位的单片机,支持寄存器位操作。 HT45F24A单片机不带UART串口,要想实现串口功能,只能自己用定时…

【数据库四】MySQL备份与恢复

MySQL备份与恢复 1.数据库备份的分类1.1 数据备份的重要性1.2 数据库备份的分类1.3 常见的备份方法 2.MySQL完全备份与恢复2.1 MySQL完全备份2.2 数据库完全备份分类2.3 MySQL物理冷备份及恢复2.4 数据迁移DST2.5 mysqldump进行逻辑备份2.5.1 mysqldump备份数据库2.5.2 mysqldu…

leetcode 101. 对称二叉树

2023.7.2 这道题要求我们判断一颗二叉树是否是对称的。我使用的是广度优先搜索的思想&#xff0c;通过队列将需要比较的节点依次入队和出队&#xff0c;进行对称性的判断。下面直接上代码&#xff1a; class Solution { public:bool isSymmetric(TreeNode* root) {queue<Tr…

CRM系统通过哪三步增加销售团队协作?

销售团队的协作是企业成功的重要保障。协调一致的销售团队能够提升销售效率&#xff0c;提高销售转化&#xff0c;获得更多业绩收入。那么企业要如何增加销售团队的协作&#xff1f;可以用CRM销售管理系统。 CRM系统如何增加销售团队协作&#xff1a; 1、建立统一的客户数据库…

2023最新AI创作系统/ChatGPT商业运营版网站程序源码+支持GPT4+支持ai绘画(MJ)+实时语音识别输入+免费更新版本

2023最新AI创作系统/ChatGPT商业运营版网站程序源码支持ai绘画支持GPT4.0实时语音识别输入文章资讯发布功能用户会员套餐免费更新版本 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 1、提问&#xff1a;程序已经支持G…

java pdf2html 和html2pdf 两款插件

1 pdf2html docker 启动&#xff0c;java 调用服务即可转化 https://beltxman.com/2567.html docker run -ti --rm -v ~/pdf:/pdf -w /pdf docker.io/pdf2htmlex/pdf2htmlex:0.18.8.rc2-master-20200820-ubuntu-20.04-x86_64 test.pdf 2 html2pdf java .Runtime 类型调用命…