- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用高级 java rest 客户端 (6.5),我需要根据某个日期范围过滤数据 - 假设,我在同一个索引和 2 个文档中有这 4 个文档(添加了 postman 图像)'没有 publish_date 和 publish_end_date 字段,所以当我放置一个范围时,我需要介于这些范围之间的文档和没有这些范围字段的文档。
我从这个问题中得到了一些帮助- ElasticSearch (2.2) Java filter between startDate and endDate if exists由于 QueryBuilders.missingQuery 已弃用,因此我通过引用 here 来使用 mustNot(QueryBuilders.existsQuery)但它不起作用,我没有得到结果。
当我只使用如下范围查询时,它的工作正常-
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_date").lte("now"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_end_date").gte("now"));
当我只使用像下面这样的 mustNot 查询时,我得到了想要的结果-
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.mustNot(QueryBuilders.existsQuery("publish_date"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.mustNot(QueryBuilders.existsQuery("publish_end_date"));
但问题是,当我像下面这样组合两个查询时,我没有得到任何结果(得到一个空数组)-
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_date").lte("now"))
.mustNot(QueryBuilders.existsQuery("publish_date"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_end_date").gte("now"))
.mustNot(QueryBuilders.existsQuery("publish_end_date"));
我想要结果 3 中的所有结果 1 和结果 2 值(这是我的要求)。
最佳答案
这是你应该做的:
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
.should(QueryBuilders.rangeQuery("publish_date").lte("now"))
.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("publish_date")));
关于spring-boot - Elasticsearch - must(QueryBuilders.rangeQuery) 和 mustNot(QueryBuilders.existsQuery) 不能同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55415330/
试图找到范围查询的解决方案使用 QueryBuilders.rangeQuery 问题:DateFrom 可以为空或大于今天DateTill 可以为 null 或小于今天剩余数量可以为 null 或值
我正在使用 RangeQuery 获取数量在 0 到 2 之间的所有文档。当我执行查询时,Lucene 也会给我数量大于 2 的文档。我在这里缺少什么? 这是我的代码: Term lowerTerm
我已经实现了一个 Lucene.NET (2.9) 搜索具有允许我在一个月和一年内传递的查询参数的事件 - 然后返回该月内运行的所有事件(即,如果我在 2013 年 12 月通过它将匹配在 12 月的
基本上,我希望能够使用以下查询“短语查询”AND date:[20180101 TO 20181231]来查询索引。我尝试使用 MultiFieldQueryParser,但出现以下错误: 线程“ma
我正在使用高级 java rest 客户端 (6.5),我需要根据某个日期范围过滤数据 - 假设,我在同一个索引和 2 个文档中有这 4 个文档(添加了 postman 图像)'没有 publish_
嗨,我正在尝试在 ElasticSearch 中查询,其中我想使用 multiMatchQuery 来获取数据来搜索字符串,并使用 rangequery 来过滤日期之间的数据 Calendar com
我是一名优秀的程序员,十分优秀!