@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); } }
SearchRequest request = new SearchRequest(indices(query, indexCoordinates::getIndexName)); request.types(indexTypes(query, indexCoordinates::getTypeName)); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(mappedQuery(query, entity)); searchSourceBuilder.version(entity.hasVersionProperty()); searchSourceBuilder.trackScores(query.getTrackScores()); searchSourceBuilder.postFilter(postFilterQuery); searchSourceBuilder.fetchSource(query.getSourceFilter().getIncludes(), query.getSourceFilter().getExcludes()); searchSourceBuilder.minScore(query.getMinScore()); request.indicesOptions(query.getIndicesOptions()); searchSourceBuilder.from((int) offset); searchSourceBuilder.size(pageable.getPageSize()); request.source(searchSourceBuilder);
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; } }
public static boolean isNeeded(SearchRequest request) { return (request.source() != null && request.source().fetchSource() != null && (request.source().fetchSource().includes() != null || request .source().fetchSource().excludes() != null)) || (request.source() != null && request.source().storedFields() != null && request.source().storedFields().fieldNames() != null && !request.source().storedFields().fieldNames().isEmpty()); }
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); } }
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); } }
@Override public ESSearchResponse search(ESSearchRequest request) throws IOException { SearchRequest searchRequest = new SearchRequest(); if (!isNullOrEmpty(request.getIndex())) { searchRequest.indices(request.getIndex()); SearchSourceBuilder ssb = new SearchSourceBuilder(); if (request.getSize() != null) { ssb.size(request.getSize()); ssb.storedFields(request.getFields()); ssb.query(toElasticsearchQuery(request.getESQuery())); ssb.sort(request.getSort()); ssb.highlighter(new HighlightBuilder().field(highlighter)); ssb.aggregation(AggregationBuilders.terms(aggregation.getName()).field(aggregation.getField())); searchRequest.source(ssb); searchRequest.indicesOptions(LENIENT_EXPAND_OPEN);
queryBuilder = matchAllQuery(); } else { queryBuilder = queryStringQuery(query).allowLeadingWildcard(configuration.isAllowLeadingWildcardSearches()); final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder() .query(QueryBuilders.boolQuery().must(queryBuilder).filter(standardFilters(range, filter))); searchSourceBuilder.from(offset); searchSourceBuilder.size(limit); searchSourceBuilder.sort(sort.getField(), sort.asElastic()); .fragmentSize(0) .numOfFragments(0); searchSourceBuilder.highlighter(highlightBuilder);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(queryBuilder); searchSourceBuilder.from(start); searchSourceBuilder.size(size); order = SortOrder.valueOf(sortOption.substring(index + 1)); searchSourceBuilder.sort(new FieldSortBuilder(field).order(order)); SearchRequest searchRequest = new SearchRequest(indexName); searchRequest.types(docType); searchRequest.source(searchSourceBuilder);
private long doCount(SearchRequest searchRequest, QueryBuilder elasticsearchQuery, QueryBuilder elasticsearchFilter) { if (elasticsearchQuery != null) { searchRequest.source().query(elasticsearchQuery); } else { searchRequest.source().query(QueryBuilders.matchAllQuery()); } if (elasticsearchFilter != null) { searchRequest.source().postFilter(elasticsearchFilter); } SearchResponse response; try { response = client.search(searchRequest); } catch (IOException e) { throw new ElasticsearchException("Error for search request: " + searchRequest.toString(), e); } return response.getHits().getTotalHits(); }
LOG.debug("Got search request; request={}", ElasticsearchUtils.toJSON(searchRequest).orElse("???")); SearchSourceBuilder searchBuilder = new SearchSourceBuilder() .size(searchRequest.getSize()) .from(searchRequest.getFrom()) .query(queryBuilder) .trackScores(true); List<String> fields = searchRequest.getFields(); .missing(missingSortOrder) .unmappedType(sortFieldType.getFieldType()); searchBuilder.sort(sortBy); searchBuilder.fetchSource("*", null); } else { searchBuilder.fetchSource(true); TermsAggregationBuilder terms = AggregationBuilders.terms( name).field(field); searchBuilder.aggregation(terms); LOG.debug("Built Elasticsearch request; indices={}, request={}", indices, searchBuilder.toString()); return new org.elasticsearch.action.search.SearchRequest() .indices(indices) .source(searchBuilder);
public Search queryGetEventById(String uuid) { SearchSourceBuilder source = new SearchSourceBuilder(); source.query(QueryBuilders.matchQuery("uuid", uuid)); return new Search.Builder(source.toString()).addIndex(connection.getIndexName()) .addType(ElasticConstants.TYPE_EVENT).build(); }
BoolQueryBuilder guidQuery = boolQuery().must(termsQuery(Constants.GUID, guids)); BoolQueryBuilder sensorQuery = boolQuery(); sensorTypes.forEach(sensorType -> sensorQuery.should(typeQuery(sensorType + "_doc"))); SearchSourceBuilder source = new SearchSourceBuilder() .query(query) .size(guids.size()); SearchRequest request = new SearchRequest().source(source); response = submitter.submitSearch(request);
int pageSize ) throws IOException { org.elasticsearch.action.search.SearchRequest request = new org.elasticsearch.action.search.SearchRequest(); SearchSourceBuilder builder = new SearchSourceBuilder(); builder.query(qb); builder.size(pageSize); builder.fetchSource(true); builder.storedField("*"); request.source(builder); request.indices(index); for (int i = 1; i < pages; i++) { int from = i * pageSize; builder.from(from); esResponse = transportClient.search(request); allResults.addAll(getSearchResults(esResponse));
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; }
try { if (this.instance() == null) return new Page<>(); SearchRequest request = new SearchRequest(name); SearchSourceBuilder builder = new SearchSourceBuilder(); builder.query(QueryBuilders.multiMatchQuery(keyword, fields)); builder.from((pageNo - 1) * pageSize).size(pageSize); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT);
protected SearchRequest getCardinalityRequest(FilterJoinNode node, ActionRequest parentRequest) { String[] lookupIndices = node.getLookupIndices(); String[] lookupTypes = node.getLookupTypes(); String lookupPath = node.getLookupPath(); // Build the search source with the aggregate definition SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.size(0).aggregation(AggregationBuilders.cardinality(lookupPath).field(lookupPath)); // Build search request with reference to the parent request SearchRequest searchRequest = new SearchRequest(parentRequest); searchRequest.indices(lookupIndices).types(lookupTypes).source(sourceBuilder); return searchRequest; }
context.from(source.from()); context.size(source.size()); Map<String, InnerHitContextBuilder> innerHitBuilders = new HashMap<>(); if (source.query() != null) { InnerHitContextBuilder.extractInnerHits(source.query(), innerHitBuilders); context.parsedQuery(queryShardContext.toQuery(source.query())); if (source.postFilter() != null) { InnerHitContextBuilder.extractInnerHits(source.postFilter(), innerHitBuilders); context.parsedPostFilter(queryShardContext.toQuery(source.postFilter())); if (source.sorts() != null) { try { Optional<SortAndFormats> optionalSort = SortBuilder.buildSort(source.sorts(), context.getQueryShardContext()); if (optionalSort.isPresent()) { context.sort(optionalSort.get()); context.trackScores(source.trackScores()); if (source.trackTotalHits() == false && context.scrollContext() != null) { throw new SearchContextException(context, "disabling [track_total_hits] is not allowed in a scroll context"); context.trackTotalHits(source.trackTotalHits()); if (source.minScore() != null) { context.minimumScore(source.minScore()); if (source.profile()) { context.setProfilers(new Profilers(context.searcher())); if (source.timeout() != null) {
public void move(String source, String target) { final String query = SearchSourceBuilder.searchSource() .query(QueryBuilders.matchAllQuery()) .size(350) .sort(SortBuilders.fieldSort(FieldSortBuilder.DOC_FIELD_NAME)) .toString(); final Search request = new Search.Builder(query) .setParameter(Parameters.SCROLL, "10s") .addIndex(source) .build();
SearchRequest buildSearchRequest(final String indexName, final String query, final String[] fields, final int maxRows) throws IOException { final String q = mapper.writeValueAsString(mapper.readTree(query).get("query")); final SearchSourceBuilder qBuilder = new SearchSourceBuilder() .query(QueryBuilders.wrapperQuery(q)) .size(maxRows) .fetchSource(fields, null); return new SearchRequest(indexName).source(qBuilder); }