private QueryBuilder buildNegationQuery(String fieldName, Iterator<Criteria.CriteriaEntry> it){ BoolQueryBuilder notQuery = boolQuery(); while (it.hasNext()){ notQuery.mustNot(fieldQuery(fieldName, it.next().getValue())); } return notQuery; }
query = fieldQuery(fieldName, value); break; case CONTAINS: query = fieldQuery(fieldName,"*" + value + "*").analyzeWildcard(true); break; case STARTS_WITH: query = fieldQuery(fieldName,value +"*").analyzeWildcard(true); break; case ENDS_WITH: query = fieldQuery(fieldName, "*"+value).analyzeWildcard(true); break; case EXPRESSION: query = queryString((String)value).field(fieldName); break; Iterable<Object> collection = (Iterable<Object>) value; for(Object item : collection){ ((BoolQueryBuilder) query).should(fieldQuery(fieldName, item));
/** * It basically searches and returns a set of tweet ids for a given keyword. * * @param keyword * @return */ public Set<String> search(String keyword) { SearchResponse response; try { response = client.prepareSearch() .setIndices("hackaton") .setTypes("tweets") .addFields("id", "text") .setQuery(QueryBuilders.fieldQuery("text", keyword)).execute().actionGet(); } catch (Throwable e) { return new HashSet<String>(); } Set<String> result = new HashSet<String>(); for (SearchHit hit : response.getHits()) { Long id = hit.field("id").<Long>getValue(); result.add(String.valueOf(id)); } return result; }
.setQuery( QueryBuilders.boolQuery() .must(QueryBuilders.fieldQuery("slug", collection)) .must(QueryBuilders.termQuery("site.slug", shop)) .setQuery( QueryBuilders.boolQuery() .must(QueryBuilders.fieldQuery("collections", collection)) .must(QueryBuilders.termQuery("site.slug", shop))