public PageableList<HttpArticle> query(NamedQuery... queries) { BoolQueryBuilder query = QueryBuilders.boolQuery(); for (NamedQuery nq : queries) { addQuery(query, true, nq.getNotStemmedCaseSensitive(), "nostem_cs"); addQuery(query, true, nq.getNotStemmedCaseInSensitive(), "nostem_ci"); addQuery(query, true, nq.getStemmedCaseSensitive(), "stem_cs"); addQuery(query, true, nq.getStemmedCaseInSensitive(), "stem_ci"); if (!Strings.isNullOrEmpty(nq.getAdvanced())) { query.must(QueryBuilders.queryStringQuery(nq.getAdvanced()) .defaultOperator(Operator.AND)); } } SearchResponse response = getConnection().getClient().prepareSearch(getIndex()) .setTypes(getType()) .setQuery(query) .setSize(100) .setFetchSource(true) .addSort(PUBLISHED_FIELD, SortOrder.DESC) .setExplain(false) .execute() .actionGet(); List<HttpArticle> items = Arrays.stream(response.getHits().getHits()) .map(SearchHit::getSource) .filter(Objects::nonNull) .map(this::mapToHttpArticle) .collect(Collectors.toList()); return PageableList.create(items, response.getHits().getTotalHits()); }
public PageableList<HighlightedSearchResult> query(List<NamedQuery> included, List<NamedQuery> excluded, String additional) { BoolQueryBuilder query = QueryBuilders.boolQuery(); for (NamedQuery nq : included) { addQuery(query, true, nq.getNotStemmedCaseSensitive(), "nostem_cs"); addQuery(query, true, nq.getNotStemmedCaseInSensitive(), "nostem_ci"); addQuery(query, true, nq.getStemmedCaseSensitive(), "stem_cs"); addQuery(query, true, nq.getStemmedCaseInSensitive(), "stem_ci"); if (!Strings.isNullOrEmpty(nq.getAdvanced())) { query.must(QueryBuilders.queryStringQuery(nq.getAdvanced()) addQuery(query, false, nq.getNotStemmedCaseSensitive(), "nostem_cs"); addQuery(query, false, nq.getNotStemmedCaseInSensitive(), "nostem_ci"); addQuery(query, false, nq.getStemmedCaseSensitive(), "stem_cs"); addQuery(query, false, nq.getStemmedCaseInSensitive(), "stem_ci"); if (!Strings.isNullOrEmpty(nq.getAdvanced())) { query.mustNot(QueryBuilders.queryStringQuery(nq.getAdvanced())