use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project muikku by otavanopisto.
the class ElasticSearchProvider method findUser.
@Override
public SearchResult findUser(Long userEntityId, boolean includeInactive) {
// Query that checks activity based on user having a study end date set
BoolQueryBuilder query = boolQuery();
if (!includeInactive) {
query.mustNot(existsQuery("studyEndDate"));
}
query.must(termQuery("userEntityId", userEntityId));
// Search
SearchRequestBuilder requestBuilder = elasticClient.prepareSearch("muikku").setTypes("User");
// Results processing
SearchResponse response = requestBuilder.setQuery(query).execute().actionGet();
List<Map<String, Object>> searchResults = new ArrayList<Map<String, Object>>();
SearchHits searchHits = response.getHits();
long totalHitCount = searchHits.getTotalHits();
SearchHit[] results = searchHits.getHits();
for (SearchHit hit : results) {
Map<String, Object> hitSource = hit.getSource();
if (hitSource == null) {
hitSource = new HashMap<>();
for (String key : hit.getFields().keySet()) {
hitSource.put(key, hit.getFields().get(key).getValue().toString());
}
}
hitSource.put("indexType", hit.getType());
searchResults.add(hitSource);
}
return new SearchResult(0, searchResults.size(), searchResults, totalHitCount);
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project muikku by otavanopisto.
the class ElasticSearchProvider method search.
@Override
public SearchResult search(String query, String[] fields, int start, int maxResults, Class<?>... types) {
try {
query = sanitizeSearchString(query);
String[] typenames = new String[types.length];
for (int i = 0; i < types.length; i++) {
typenames[i] = types[i].getSimpleName();
}
SearchRequestBuilder requestBuilder = elasticClient.prepareSearch("muikku").setTypes(typenames).setFrom(start).setSize(maxResults);
BoolQueryBuilder boolQuery = boolQuery();
for (String field : fields) {
boolQuery.should(prefixQuery(field, query));
}
SearchResponse response = requestBuilder.setQuery(boolQuery).execute().actionGet();
List<Map<String, Object>> searchResults = new ArrayList<Map<String, Object>>();
SearchHits searchHits = response.getHits();
long totalHitCount = searchHits.getTotalHits();
SearchHit[] results = searchHits.getHits();
for (SearchHit hit : results) {
Map<String, Object> hitSource = hit.getSource();
hitSource.put("indexType", hit.getType());
searchResults.add(hitSource);
}
SearchResult result = new SearchResult(start, maxResults, searchResults, totalHitCount);
return result;
} catch (Exception e) {
logger.log(Level.SEVERE, "ElasticSearch query failed unexpectedly", e);
return new SearchResult(0, 0, new ArrayList<Map<String, Object>>(), 0);
}
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project vertigo by KleeGroup.
the class ESSearchRequestBuilder method appendSearchQuery.
private static void appendSearchQuery(final SearchQuery searchQuery, final SearchRequestBuilder searchRequestBuilder, final boolean useHighlight) {
final BoolQueryBuilder filterBoolQueryBuilder = QueryBuilders.boolQuery();
final BoolQueryBuilder postFilterBoolQueryBuilder = QueryBuilders.boolQuery();
// on ajoute les critères de la recherche AVEC impact sur le score
final QueryBuilder queryBuilder = appendSearchQuery(searchQuery, filterBoolQueryBuilder);
// on ajoute les filtres de sécurité SANS impact sur le score
appendSecurityFilter(searchQuery.getSecurityListFilter(), filterBoolQueryBuilder);
// on ajoute les filtres des facettes SANS impact sur le score
appendSelectedFacetValues(searchQuery.getFacetedQuery(), filterBoolQueryBuilder, postFilterBoolQueryBuilder);
final QueryBuilder requestQueryBuilder;
if (searchQuery.isBoostMostRecent()) {
requestQueryBuilder = appendBoostMostRecent(searchQuery, queryBuilder);
} else {
requestQueryBuilder = filterBoolQueryBuilder;
}
searchRequestBuilder.setQuery(requestQueryBuilder).setPostFilter(postFilterBoolQueryBuilder);
if (useHighlight) {
// .setHighlighterFilter(true) //We don't highlight the security filter
searchRequestBuilder.setHighlighterNumOfFragments(HIGHLIGHTER_NUM_OF_FRAGMENTS).addHighlightedField("*");
}
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project vertigo by KleeGroup.
the class ESSearchRequestBuilder method appendSecurityFilter.
private static void appendSecurityFilter(final Optional<ListFilter> securityListFilter, final BoolQueryBuilder filterBoolQueryBuilder) {
if (securityListFilter.isPresent()) {
final QueryBuilder securityFilterBuilder = translateToQueryBuilder(securityListFilter.get());
filterBoolQueryBuilder.filter(securityFilterBuilder);
// use filteredQuery instead of PostFilter in order to filter aggregations too.
}
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project vertigo by KleeGroup.
the class ESSearchRequestBuilder method appendSearchQuery.
private static QueryBuilder appendSearchQuery(final SearchQuery searchQuery, final BoolQueryBuilder filterBoolQueryBuilder) {
final QueryBuilder queryBuilder = translateToQueryBuilder(searchQuery.getListFilter());
filterBoolQueryBuilder.must(queryBuilder);
return queryBuilder;
}
Aggregations