在ES索引中有两个字段:min_duration和max_duration。我希望创建一个查询来查找输入duration的所有文档,以便:
min_duration<=duration<=max_duration
例如,如果duration是30秒,那么我应该让所有文档的min_duration小于eq到duration,而duration小于eq到max_duration。
我正在使用ES Java,似乎范围筛选是可行的方法。我已经构造了如下的距离滤波器:
val filter = FilterBuilders.andFilter( FilterBuilders.rangeFilter("min_duration").lte(duration),FilterBuilders.rangeFilter("max_duration").gte(duration))虽然它似乎对我不起作用。这是构建这类查询的正确方式,还是我遗漏了什么?
谢谢。
发布于 2016-01-15 01:16:39
试着用bool查询来做。将两个范围子句封装在其中,如下所示
QueryBuilder qb = boolQuery()
.must(rangeQuery("max_duration").gte(duration))
.must(rangeQuery("min_duration").lte(duration));这个有用吗?
https://stackoverflow.com/questions/34801397
复制相似问题