悟空,拿我的打狗棒来

如何查询一个字符串里面数字在范围内

Elasticsearch | 作者 w565039616 | 发布于2020年03月19日 | 阅读数:2146

现在有一个索引 ,里面有一个 shenfen_no 字段为身份证号,类型为keyword, 现在想根据年月日范围查询 ,希望找到身份证号里面的年月日 满足范围查询的身份证号,
例如 身份证号 数据有 xxxxxx19890156xxxx, xxxxxx19930156xxxx ,xxxxxx20000156xxxx
现在范围查询为 19910101 到 19990101 ,这样查询出 xxxxxx19930156xxxx 就想这样查询 dsl 该怎么写
已邀请:

tacsklet - 公司有用到es

赞同来自:

使用painless是可以实现的,但是不建议这么干,因为身份证号本身是为了作为唯一标识含义而存在的字符串字段,通过它来进行范围的操作是十分不合理的。每个工具或者字段都有它本身的适用场景,只考虑能不能用的话很容易带来性能的下降或者资源浪费。就像拿水果刀去切菜切肉的感觉一样。。。
我认为比较正确的做法是建立并填充出生日期字段,通过此字段去查询。当然还要结合你所使用的具体场景去决定。
匿名用户

匿名用户

赞同来自:

xxxxxx20000156xxxx   拆字段吧,身份证,按照不同的部分,拆分.
 
可以看看身份证的规范,比如前三位代表什么,后四位代表什么.
 
一个完整的字段,加上拆分开几个字段.

要回复问题请先登录注册