我想对两个带通配符前缀的数字之间的范围执行ElasticSearch。例如:
1.用户给出203和899。我想找出203到899之间的所有数字。但是数据库可以在数字前面有一个字符,如A203和B899。我希望结果包括A203和B899之间的范围。
我想Regex我可以做[A-Z]?203,但我不确定它是否能用这种方式计算出值的数值范围?所以总结一下-我的表有数据,如A20322,B3415,C777,856,Y888等。我希望能够找到这些值的范围,同时忽略Character前缀(如果存在):因此,如果我输入C777和856,我想找到777和856之间的所有数字(忽略C前面的字母)。
我知道Elastic search有一个RangeQuery函数,但它似乎接受数字而不是正则表达式。谢谢!
我尝试了RangeQuery,我不认为它返回我想要的结果。我试过:QueryBuilders.rangeQuery(“test”).gte(“[A-Z]?”).lte(“[A-Z]?456”);
1条答案
按热度按时间42fyovps1#
您可以通过组合通配符查询和范围查询来实现结果:
在Java SDK中使用: