Aru*_*yam 1 java scala elasticsearch
我的 ES 索引中有两个字段:min_duration
和max_duration
. 我想创建一个查询来查找所有输入文档,duration
以便:
min_duration<=duration<=max_duration
例如,如果duration
是 30 秒,那么我应该得到所有min_duration
小于 eq toduration
和duration
小于 eq to 的文档max_duration
。
我正在使用 ES Java API,似乎范围过滤器是要走的路。我构造了范围过滤器,如下所示:
val filter = FilterBuilders.andFilter( FilterBuilders.rangeFilter("min_duration").lte(duration),FilterBuilders.rangeFilter("max_duration").gte(duration))
Run Code Online (Sandbox Code Playgroud)
虽然它似乎仍然不适合我。这是构建此类查询的正确方法还是我遗漏了什么?
谢谢。
尝试使用bool query来做。将您的两个范围子句包裹在其中,例如
QueryBuilder qb = boolQuery()
.must(rangeQuery("max_duration").gte(duration))
.must(rangeQuery("min_duration").lte(duration));
Run Code Online (Sandbox Code Playgroud)
这有帮助吗?
归档时间: |
|
查看次数: |
3073 次 |
最近记录: |