在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

数字字符串范围查询

Elasticsearch | 作者 zhangyk | 发布于2018年09月03日 | 阅读数:5223

索引中有一类型为string的字段str,有值6、30、50,使用range查询大于5就只查出6这一个值。哪位大神有解决办法?
已邀请:

medcl - 今晚打老虎。

赞同来自: zhangyk

string类型就按 string 类型的范围。
如果是字符,看的是字符的,第一个字符和第一个字符比较,第一个字符排完再排第二个字符。
30和50的第一个字符是3和5,都不比5大。
不足位就补0。5=>05。

最后 Mapping 里面改字段类型和重建才是王道。

zhangyk

赞同来自:

谢谢@medcl的回答,问题是生产环境,重建mapping不太现实。

rochy - rochy_he

赞同来自:

如果不想重建,且字段是有限的集合(比较少),你可以使用 termsQuery来进行代替。

yzg

赞同来自:

楼主实现了吗  我也是这个问题

要回复问题请先登录注册