java - 具有空日期或值的 QueryBuilders rangeQuery
问题描述
尝试使用 QueryBuilders.rangeQuery 找到范围查询的解决方案
问题:DateFrom 可以为 null 或大于今天 DateTill 可以为 null 或小于今天 quantyti 剩余可以为 null 或值可以大于 0
只有这样文件才能出现在搜索结果中我试图解决这个问题
publishedFilter.should(QueryBuilders.boolQuery()
.mustNot(QueryBuilders.existsQuery(SearchAble.QUANTITY_REMAINING)))
.should(QueryBuilders.rangeQuery(SearchAble.QUANTITY_REMAINING).gte(1))
.minimumShouldMatch(1);
publishedFilter.should(QueryBuilders.boolQuery()
.mustNot(QueryBuilders.existsQuery(SearchAble.DATE_TIME_FROM))
.should(QueryBuilders.rangeQuery(SearchAble.DATE_TIME_FROM).lte(time))
);
publishedFilter.should(QueryBuilders.boolQuery()
.mustNot(QueryBuilders.existsQuery(SearchAble.DATE_TIME_TILL))
.should(QueryBuilders.rangeQuery(SearchAble.DATE_TIME_TILL).gte(time))
);
但此解决方案仅适用于 quantyti 剩余而不是 dateFrom 和 dateTill
有任何想法吗 ?
解决方案
我会这样做:
// at least one of the OR conditions must match
publishedFilter.minimumShouldMatch(1);
// OR condition for Quantity
publishedFilter.should(QueryBuilders.boolQuery()
.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(SearchAble.QUANTITY_REMAINING)))
.should(QueryBuilders.rangeQuery(SearchAble.QUANTITY_REMAINING).gte(1))
);
// OR condition for Date From
publishedFilter.should(QueryBuilders.boolQuery()
.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(SearchAble.DATE_TIME_FROM)))
.should(QueryBuilders.rangeQuery(SearchAble.DATE_TIME_FROM).lte(time))
);
// OR condition for Date Till
publishedFilter.should(QueryBuilders.boolQuery()
.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(SearchAble. DATE_TIME_TILL)))
.should(QueryBuilders.rangeQuery(SearchAble. DATE_TIME_TILL).gte(time))
);
推荐阅读
- reactjs - 反应粘性导航栏
- javascript - 如何在单个组件中使用多个反应颜色选择器?
- spring-boot - 测试容器中的 Kafka 侦听器,避开端口 9092
- javascript - 如何在滚动时使用“位置:粘性”从 td / th 添加或删除阴影?
- python - 如何处理房地产数据中的缺失值?
- wordpress - WP Yoast - wp_yoast_indexable - 超时
- c# - 我怎样才能修复我的 Quaternion.LookRotation 二维
- java - How can I fix the merge sort algorithm in Java and return sorted array from function
- kubernetes-helm - 错误:找不到skywalking:stat skywalking:没有这样的文件或目录
- java - 如何在 PagedListAdapter 中将 LiveData 列表转换为 LiveData PagedList