/** * Navigates the specified index search filters and adds boolean filter clauses to a given {@link SearchRequestBuilder} * * @param indexSearchFilters the specified search filters * @param bdefActiveIndex the active bdef index name * @param tagActiveIndex the active tag index name * * @return boolean query with the filters applied */ public BoolQueryBuilder addIndexSearchFilterBooleanClause(List<IndexSearchFilter> indexSearchFilters, String bdefActiveIndex, String tagActiveIndex) { BoolQueryBuilder compoundBoolQueryBuilder = new BoolQueryBuilder(); for (IndexSearchFilter indexSearchFilter : indexSearchFilters) { BoolQueryBuilder indexSearchFilterClauseBuilder = applySearchFilterClause(indexSearchFilter, bdefActiveIndex, tagActiveIndex); // If the search filter is marked with the exclusion flag then apply the entire compound filter clause on the request builder within a MUST NOT // clause. if (BooleanUtils.isTrue(indexSearchFilter.isIsExclusionSearchFilter())) { compoundBoolQueryBuilder.mustNot(indexSearchFilterClauseBuilder); } else { // Individual search filters are AND-ed (the compound filter clause is applied on the search request builder within a MUST clause) compoundBoolQueryBuilder.must(indexSearchFilterClauseBuilder); } } return compoundBoolQueryBuilder; }
/** * Navigates the specified index search filters and adds boolean filter clauses to a given {@link SearchRequestBuilder} * * @param indexSearchFilters the specified search filters * @param bdefActiveIndex the active bdef index name * @param tagActiveIndex the active tag index name * * @return boolean query with the filters applied */ public BoolQueryBuilder addIndexSearchFilterBooleanClause(List<IndexSearchFilter> indexSearchFilters, String bdefActiveIndex, String tagActiveIndex) { BoolQueryBuilder compoundBoolQueryBuilder = new BoolQueryBuilder(); for (IndexSearchFilter indexSearchFilter : indexSearchFilters) { BoolQueryBuilder indexSearchFilterClauseBuilder = applySearchFilterClause(indexSearchFilter, bdefActiveIndex, tagActiveIndex); // If the search filter is marked with the exclusion flag then apply the entire compound filter clause on the request builder within a MUST NOT // clause. if (BooleanUtils.isTrue(indexSearchFilter.isIsExclusionSearchFilter())) { compoundBoolQueryBuilder.mustNot(indexSearchFilterClauseBuilder); } else { // Individual search filters are AND-ed (the compound filter clause is applied on the search request builder within a MUST clause) compoundBoolQueryBuilder.must(indexSearchFilterClauseBuilder); } } return compoundBoolQueryBuilder; }