use of io.searchbox.core.Search in project ff4j by ff4j.
the class ElasticQueryBuilder method getGroupByGroupName.
public Search getGroupByGroupName(String groupName) {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("group", groupName));
return //
new Search.Builder(searchSourceBuilder.toString()).addIndex(//
connection.getIndexName()).addType(ElasticConstants.TYPE_FEATURE).build();
}
use of io.searchbox.core.Search in project ff4j by ff4j.
the class ElasticQueryBuilder method queryPropertyByName.
public Search queryPropertyByName(String name) {
SearchSourceBuilder source = new SearchSourceBuilder();
source.query(QueryBuilders.matchQuery("name", name));
return new Search.Builder(source.toString()).addIndex(connection.getIndexName()).addType(ElasticConstants.TYPE_PROPERTY).build();
}
use of io.searchbox.core.Search in project vind by RBMHTechnology.
the class ElasticSearchClient method getQuery.
public synchronized SearchResult getQuery(String query) {
final JestClient client = getElasticSearchClient();
if (client != null) {
final Search search = new Search.Builder(query).addIndex(elasticIndex).addType(// TODO extract this
"logEntry").build();
try {
final SearchResult result = client.execute(search);
log.debug("Completed total requests query. Succeeded: {}", result.isSucceeded());
return result;
} catch (IOException e) {
log.error("Error in total requests query: {}", e.getMessage(), e);
return null;
}
// TODO: move to async at some point
/*client.executeAsync(search,new JestResultHandler<JestResult>() {
@Override
public void completed(JestResult result) {
log.debug("Completed total requests query. Succeeded: {}", result.isSucceeded());
}
@Override
public void failed(Exception e) {
log.error("Error indexing content : {}", e.getMessage(), e);
}
});*/
}
return null;
}
use of io.searchbox.core.Search in project graylog2-server by Graylog2.
the class ScrollResultES6IT method nextChunkDoesNotContainJestMetadata.
@Test
public void nextChunkDoesNotContainJestMetadata() throws IOException {
importFixture("ScrollResultIT.json");
final String query = SearchSourceBuilder.searchSource().query(matchAllQuery()).toString();
final Search request = new Search.Builder(query).addIndex(INDEX_NAME).addType(IndexMapping.TYPE_MESSAGE).setParameter(Parameters.SCROLL, "1m").setParameter(Parameters.SIZE, 5).build();
final SearchResult searchResult = JestUtils.execute(jestClient(elasticsearch), request, () -> "Exception");
assertThat(jestClient(elasticsearch)).isNotNull();
final ScrollResult scrollResult = new ScrollResultES6(jestClient(elasticsearch), objectMapper, searchResult, "*", Collections.singletonList("message"), -1);
scrollResult.nextChunk().getMessages().forEach(message -> assertThat(message.getMessage().getFields()).doesNotContainKeys("es_metadata_id", "es_metadata_version"));
scrollResult.nextChunk().getMessages().forEach(message -> assertThat(message.getMessage().getFields()).doesNotContainKeys("es_metadata_id", "es_metadata_version"));
assertThat(scrollResult.nextChunk()).isNull();
}
use of io.searchbox.core.Search in project graylog2-server by Graylog2.
the class QuerySuggestionsES6 method suggest.
@Override
public SuggestionResponse suggest(SuggestionRequest req) {
final Set<String> affectedIndices = indexLookup.indexNamesForStreamsInTimeRange(req.streams(), req.timerange());
final SearchSourceBuilder search = new SearchSourceBuilder().query(QueryBuilders.prefixQuery(req.field(), req.input())).size(0).aggregation(AggregationBuilders.terms("fieldvalues").field(req.field()).size(req.size())).suggest(new SuggestBuilder().addSuggestion("corrections", SuggestBuilders.termSuggestion(req.field()).text(req.input()).size(req.size())));
final Search.Builder searchBuilder = new Search.Builder(search.toString()).addType(IndexMapping.TYPE_MESSAGE).addIndex(affectedIndices.isEmpty() ? Collections.singleton("") : affectedIndices).allowNoIndices(false).ignoreUnavailable(false);
try {
final SearchResult result = JestUtils.execute(jestClient, searchBuilder.build(), () -> "Unable to perform aggregation: ");
final TermsAggregation aggregation = result.getAggregations().getTermsAggregation("fieldvalues");
final List<SuggestionEntry> entries = aggregation.getBuckets().stream().map(b -> new SuggestionEntry(b.getKeyAsString(), b.getCount())).collect(Collectors.toList());
if (!entries.isEmpty()) {
return SuggestionResponse.forSuggestions(req.field(), req.input(), entries, aggregation.getSumOtherDocCount());
} else {
final List<SuggestionEntry> corrections = Optional.of(result.getJsonObject()).map(o -> o.get("suggest")).map(o -> o.get("corrections")).map(o -> o.get(0)).map(o -> o.get("options")).map(options -> StreamSupport.stream(Spliterators.spliteratorUnknownSize(options.elements(), Spliterator.ORDERED), false).map(option -> new SuggestionEntry(option.get("text").textValue(), option.get("freq").longValue())).collect(Collectors.toList())).orElseGet(Collections::emptyList);
return SuggestionResponse.forSuggestions(req.field(), req.input(), corrections, null);
}
} catch (Exception e) {
final SuggestionError err = SuggestionError.create(e.getClass().getSimpleName(), e.getMessage());
return SuggestionResponse.forError(req.field(), req.input(), err);
}
}
Aggregations