I have added a list of QueryBuilders if certain properties are matched. Now, I want to search using these list.
@Override
public List<com.example.jobcandidatemanagement.documents.Job> searchJobs(String phrase, LocalDate startDate, LocalDate endDate, double offeredSalary, Availability availability) {
List<QueryBuilder> searchQueries = new ArrayList<>();
if (phrase != null) {
QueryBuilder byPhrase = QueryBuilders.multiMatchQuery(phrase, "position", "description");
searchQueries.add(byPhrase);
}
if (startDate != null && endDate != null) {
QueryBuilder byStartDate = QueryBuilders.rangeQuery("startDate").gt(JsonData.of(startDate));
QueryBuilder byEndDate = QueryBuilders.rangeQuery("endDate").lt(JsonData.of(endDate));
searchQueries.add(byStartDate);
searchQueries.add(byEndDate);
}
if (offeredSalary >= 0) {
QueryBuilder byOfferedSalary = QueryBuilders.rangeQuery("offeredSalary").lte(offeredSalary);
searchQueries.add(byOfferedSalary);
}
if (availability != null) {
QueryBuilder byAvailability = QueryBuilders.matchQuery("availability", availability);
searchQueries.add(byAvailability);
}
}
I want to create a query using these all above queryBuilder. Something like this :
Query query = new NativeSearchQueryBuilder().withQuery(byPhrase)
.withQuery(byStartDate)
.withQuery(byEndDate)
.withQuery(byOfferedSalary)
.withQuery(byAvailability)
.build();