I am using High level java rest client(6.5) and I need to filter datas according to some date range - let, I have these 4 documents (added a postman image) in a same index and in 2 documents I don't have publish_date and publish_end_date field so when I will put a range I need the documents which will come in between those range and the documents which don't have those range fields also.
My requirements are matching with this question
ElasticSearch (2.2) Java filter between startDate and endDate if exists
But the QueryBuilders.missingQuery is showing undefined for QueryBuilders in 6.5.
Is that possible?
I have modified the query like below-
when I am using only the range query like below its working fine-
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_date").lte("now"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_end_date").gte("now"));
When I am using only the mustNot query like below I am getting the desired results-
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.mustNot(QueryBuilders.existsQuery("publish_date"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.mustNot(QueryBuilders.existsQuery("publish_end_date"));
But the problem is when I mix both the queries like below I am not getting any result(getting empty array)-
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"));
