use of org.elasticsearch.search.SearchHits in project muikku by otavanopisto.
the class ElasticSearchProvider method matchAllSearch.
@Override
public SearchResult matchAllSearch(int start, int maxResults) {
try {
SearchResponse response = elasticClient.prepareSearch().setQuery(matchAllQuery()).setFrom(start).setSize(maxResults).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.elasticsearch.search.SearchHits 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.elasticsearch.search.SearchHits in project muikku by otavanopisto.
the class ElasticSearchProvider method freeTextSearch.
@Override
public SearchResult freeTextSearch(String text, int start, int maxResults) {
try {
text = sanitizeSearchString(text);
SearchResponse response = elasticClient.prepareSearch().setQuery(matchQuery("_all", text)).setFrom(start).setSize(maxResults).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.elasticsearch.search.SearchHits 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.elasticsearch.search.SearchHits in project muikku by otavanopisto.
the class ElasticSearchProvider method matchAllSearch.
@Override
public SearchResult matchAllSearch(int start, int maxResults, Class<?>... types) {
try {
String[] typenames = new String[types.length];
for (int i = 0; i < types.length; i++) {
typenames[i] = types[i].getSimpleName();
}
SearchRequestBuilder requestBuilder = elasticClient.prepareSearch("muikku").setQuery(matchAllQuery()).setTypes(typenames).setFrom(start).setSize(maxResults);
SearchResponse response = requestBuilder.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);
}
}
Aggregations