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 次 |
| 最近记录: |