gpt4 book ai didi

java - 具有空日期或值的 QueryBuilders rangeQuery

转载 作者:行者123 更新时间:2023-12-02 00:34:52 25 4
gpt4 key购买 nike

试图找到范围查询的解决方案使用 QueryBuilders.rangeQuery

问题:DateFrom 可以为空或大于今天DateTill 可以为 null 或小于今天剩余数量可以为 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))
);

但此解决方案仅适用于剩余数量,而不适用于 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))
);

关于java - 具有空日期或值的 QueryBuilders rangeQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57987975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com