private long doCount(SearchRequest countRequest, QueryBuilder elasticsearchQuery) { SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); if (elasticsearchQuery != null) { sourceBuilder.query(elasticsearchQuery); } countRequest.source(sourceBuilder); try { return client.search(countRequest).getHits().getTotalHits(); } catch (IOException e) { throw new ElasticsearchException("Error while searching for request: " + countRequest.toString(), e); } }
public SearchResponse suggest(SuggestBuilder suggestion, String... indices) { SearchRequest searchRequest = new SearchRequest(indices); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.suggest(suggestion); searchRequest.source(sourceBuilder); try { return client.search(searchRequest); } catch (IOException e) { throw new ElasticsearchException("Could not execute search request : " + searchRequest.toString(), e); } }
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(queryBuilder); searchSourceBuilder.from(start);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(fq); searchSourceBuilder.sort(new FieldSortBuilder("createdTime").order(SortOrder.ASC));
/** * A static factory method to construct a new search source. */ public static SearchSourceBuilder searchSource() { return new SearchSourceBuilder(); }
/** * Constructs a new search request against the indices. No indices provided here means that search * will run against all indices. */ public SearchRequest(String... indices) { this(indices, new SearchSourceBuilder()); }
final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder() .query(QueryBuilders.boolQuery().must(queryBuilder).filter(standardFilters(range, filter)));
private long totalCount(final String[] indexNames) { // Return 0 if there are no indices in the given index set. If we run the query with an empty index list, // Elasticsearch will count all documents in all indices and thus return a wrong count. if (indexNames.length == 0) { return 0L; } final List<String> indices = Arrays.asList(indexNames); final String query = new SearchSourceBuilder() .query(QueryBuilders.matchAllQuery()) .size(0) .toString(); final Search request = new Search.Builder(query) .addIndex(indices) .build(); final MultiSearch multiSearch = new MultiSearch.Builder(request).build(); final MultiSearchResult searchResult = JestUtils.execute(jestClient, multiSearch, () -> "Fetching message count failed for indices " + indices); final List<MultiSearchResult.MultiSearchResponse> responses = searchResult.getResponses(); long total = 0L; for (MultiSearchResult.MultiSearchResponse response : responses) { if (response.isError) { throw JestUtils.specificException(() -> "Fetching message count failed for indices " + indices, response.error); } total += response.searchResult.getTotal(); } return total; } }
@Override public List<Message> getMessages(String queue) { try { Expression expression = Expression.fromString("queue='" + queue + "'"); QueryBuilder queryBuilder = expression.getFilterBuilder(); BoolQueryBuilder filterQuery = QueryBuilders.boolQuery().must(queryBuilder); QueryStringQueryBuilder stringQuery = QueryBuilders.queryStringQuery("*"); BoolQueryBuilder query = QueryBuilders.boolQuery().must(stringQuery).must(filterQuery); // Create the searchObjectIdsViaExpression source SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(query); searchSourceBuilder.sort(new FieldSortBuilder("created").order(SortOrder.ASC)); // Generate the actual request to send to ES. SearchRequest searchRequest = new SearchRequest(logIndexPrefix + "*"); searchRequest.types(MSG_DOC_TYPE); searchRequest.source(searchSourceBuilder); SearchResponse response = elasticSearchClient.search(searchRequest); return mapGetMessagesResponse(response); } catch (Exception e) { logger.error("Failed to get messages for queue: {}", queue, e); throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, e.getMessage(), e); } }
@Override public List<EventExecution> getEventExecutions(String event) { try { Expression expression = Expression.fromString("event='" + event + "'"); QueryBuilder queryBuilder = expression.getFilterBuilder(); BoolQueryBuilder filterQuery = QueryBuilders.boolQuery().must(queryBuilder); QueryStringQueryBuilder stringQuery = QueryBuilders.queryStringQuery("*"); BoolQueryBuilder query = QueryBuilders.boolQuery().must(stringQuery).must(filterQuery); // Create the searchObjectIdsViaExpression source SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(query); searchSourceBuilder.sort(new FieldSortBuilder("created").order(SortOrder.ASC)); // Generate the actual request to send to ES. SearchRequest searchRequest = new SearchRequest(logIndexPrefix + "*"); searchRequest.types(EVENT_DOC_TYPE); searchRequest.source(searchSourceBuilder); SearchResponse response = elasticSearchClient.search(searchRequest); return mapEventExecutionsResponse(response); } catch (Exception e) { logger.error("Failed to get executions for event: {}", event, e); throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, e.getMessage(), e); } }
private SearchRequest prepareScroll(Query query, long scrollTimeInMillis) { SearchRequest request = new SearchRequest(toArray(query.getIndices())); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); request.types(toArray(query.getTypes())); request.scroll(TimeValue.timeValueMillis(scrollTimeInMillis)); if (query.getPageable().isPaged()) { searchSourceBuilder.size(query.getPageable().getPageSize()); } if (!isEmpty(query.getFields())) { searchSourceBuilder.fetchSource(toArray(query.getFields()), null); } request.source(searchSourceBuilder); return request; }
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(queryBuilder); searchSourceBuilder.from(start);
request.types(indexTypes(query, indexCoordinates::getTypeName)); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(mappedQuery(query, entity)); searchSourceBuilder.version(entity.hasVersionProperty());
public static SearchSourceBuilder fromXContent(XContentParser parser, boolean checkTrailingTokens) throws IOException { SearchSourceBuilder builder = new SearchSourceBuilder(); builder.parseXContent(parser, checkTrailingTokens); return builder; }
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); request.types(toArray(query.getTypes())); sourceBuilder.version(true);
private SearchSourceBuilder sourceBuilder() { if (request.source() == null) { request.source(new SearchSourceBuilder()); } return request.source(); }
@Override public String toString() { if (request.source() != null) { return request.source().toString(); } return new SearchSourceBuilder().toString(); }
/** * Constructor for actual use. * * @param searchRequest the search request to execute to get the documents to process * @param setDefaults should this request set the defaults on the search request? Usually set to true but leave it false to support * request slicing */ public AbstractBulkByScrollRequest(SearchRequest searchRequest, boolean setDefaults) { this.searchRequest = searchRequest; // Set the defaults which differ from SearchRequest's defaults. if (setDefaults) { searchRequest.scroll(DEFAULT_SCROLL_TIMEOUT); searchRequest.source(new SearchSourceBuilder()); searchRequest.source().size(DEFAULT_SCROLL_SIZE); } }
/** * Builds a group search request. * @param groupRequest The Metron group request. * @param queryBuilder The search query. * @return An Elasticsearch search request. */ private org.elasticsearch.action.search.SearchRequest buildGroupRequest( GroupRequest groupRequest, QueryBuilder queryBuilder) { // handle groups TermsAggregationBuilder groups = getGroupsTermBuilder(groupRequest, 0); final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder() .query(queryBuilder) .aggregation(groups); // return the search request String[] indices = wildcardIndices(groupRequest.getIndices()); return new org.elasticsearch.action.search.SearchRequest() .indices(indices) .source(searchSourceBuilder); }
@Override public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) { String[] indices = Strings.splitStringByCommaToArray(request.param("index")); SearchRequest countRequest = new SearchRequest(indices); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(0); countRequest.source(searchSourceBuilder); try { request.withContentOrSourceParamParserOrNull(parser -> { if (parser == null) { QueryBuilder queryBuilder = RestActions.urlParamsToQueryBuilder(request); if (queryBuilder != null) { searchSourceBuilder.query(queryBuilder); } } else { searchSourceBuilder.query(RestActions.getQueryContent(parser)); } }); } catch (IOException e) { throw new ElasticsearchException("Couldn't parse query", e); } return channel -> client.search(countRequest, new RestResponseListener<SearchResponse>(channel) { @Override public RestResponse buildResponse(SearchResponse countResponse) throws Exception { return RestTable.buildResponse(buildTable(request, countResponse), channel); } }); }