public SearchRequestBuilder createScrollSearch(String oldIndexName, String oldType, String filter, int hitsPerPage, boolean withVersion, int keepTimeInMinutes, Client client) { SearchRequestBuilder srb = client.prepareSearch(oldIndexName). setTypes(oldType). setVersion(withVersion). setSize(hitsPerPage). setSearchType(SearchType.SCAN). addField("_source"). addField("_parent"). setScroll(TimeValue.timeValueMinutes(keepTimeInMinutes)); if (filter != null && !filter.trim().isEmpty()) srb.setPostFilter(filter); return srb; }
/** * Evaluates the given query and returns the results as a TopDocs instance. */ public SearchHits search(SearchRequestBuilder request, QueryBuilder query) { String[] types = getTypes(); int nDocs; if (maxDocs > 0) { nDocs = maxDocs; } else { long docCount = client.prepareSearch(indexName).setTypes(types).setSource( new SearchSourceBuilder().size(0).query(query)).get().getHits().getTotalHits(); nDocs = Math.max((int)Math.min(docCount, Integer.MAX_VALUE), 1); } SearchResponse response = request.setIndices(indexName).setTypes(types).setVersion(true).setQuery( query).setSize(nDocs).execute().actionGet(); return response.getHits(); }
protected <E extends EsDocument> ScrollableResponse<List<E>> retrieveAll( String[] includeFields, int size, ThrowingFunction<String, E> createFunc) throws Exception { Preconditions.checkArgument(size > 0); SearchRequestBuilder builder = esClient.prepareSearch() .setIndices(getIndexName()).setTypes(getDocTypeName()) .setScroll(new TimeValue(SCROLLDEFAULTTIMEOUT)) .setSize(size) .setFetchSource(includeFields, null).setVersion(true); SearchResponse response = builder.execute().actionGet(); return convertToScrollableResponse(response, createFunc); }
protected <E extends EsDocument> ScrollableResponse<List<E>> retrieveScrollByQuery( QueryBuilder queryBuilder, String[] includeFields, int size, ThrowingFunction<String, E> createFunc) throws Exception { Preconditions.checkArgument(size > 0); SearchRequestBuilder builder = esClient.prepareSearch() .setIndices(getIndexName()).setTypes(getDocTypeName()) .setScroll(new TimeValue(SCROLLDEFAULTTIMEOUT)) .setSize(size) .setQuery(queryBuilder) .setFetchSource(includeFields, null).setVersion(true); SearchResponse response = builder.execute().actionGet(); return convertToScrollableResponse(response, createFunc); }
protected SearchResponse retrieveByField(String field, Object value, String[] includeFields) throws Exception { // The query here is using the exact value match. // https://www.elastic.co/guide/en/elasticsearch/guide/1.x/_finding_exact_values.html SearchRequestBuilder builder = esClient.prepareSearch() .setIndices(getIndexName()).setTypes(getDocTypeName()) .setQuery(QueryBuilders .filteredQuery(QueryBuilders.matchAllQuery(), FilterBuilders.termsFilter(field, value))) .setFetchSource(includeFields, null).setVersion(true); return builder.execute().actionGet(); }
protected <E extends EsDocument> ScrollableResponse<List<E>> retrieveScrollByField( String field, Object value, String[] includeFields, int size, ThrowingFunction<String, E> createFunc) throws Exception { Preconditions.checkArgument(size > 0); SearchRequestBuilder builder = esClient.prepareSearch() .setIndices(getIndexName()).setTypes(getDocTypeName()) .setScroll(new TimeValue(SCROLLDEFAULTTIMEOUT)) .setSize(size) .setQuery(QueryBuilders .filteredQuery(QueryBuilders.matchAllQuery(), FilterBuilders.termsFilter(field, value))) .setFetchSource(includeFields, null).setVersion(true); SearchResponse response = builder.execute().actionGet(); return convertToScrollableResponse(response, createFunc); }
@SuppressWarnings("PMD.NcssMethodCount") SearchResponse startScroll() { //https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search-scrolling.html SearchRequestBuilder searchRequestBuilder = client.prepareSearch(indexName); searchRequestBuilder.addSort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC) .setQuery(createQuery()) .setSize(BATCH_SIZE) .setExplain(false) .setFetchSource(false) .setVersion(true) .setScroll(TimeValue.timeValueMinutes(SCROLL_TIME_IN_MINUTES)); return searchRequestBuilder.execute().actionGet(); }
.setFetchSource(false) .addSort(DOC, SortOrder.ASC) .setVersion(true) .setScroll(scrollTimeout) .setSource(toSearchSourceBuilder(queryMap))
.setFetchSource(false) .addSort(DOC, SortOrder.ASC) .setVersion(true) .setScroll(scrollTimeout) .setSource(toSearchSourceBuilder(queryMap))
if (options.getFrom() != null) builder.setFrom(options.getFrom()); if (options.isExplain() != null) builder.setExplain(options.isExplain()); if (options.isVersion() != null) builder.setVersion(options.isVersion()); if (options.isFetchSource() != null) builder.setFetchSource(options.isFetchSource()); if (!options.getFields().isEmpty()) options.getFields().forEach(builder::addField);
private SearchRequestBuilder buildSearch() { EntityDescriptor ed = indexAccess.getDescriptor(clazz); SearchRequestBuilder srb = indexAccess.getClient() .prepareSearch(index != null ? index : indexAccess.getIndexName(ed.getIndex())) .setTypes(ed.getType()); srb.setVersion(true); srb.setExplain(explain); if (primary) { srb.setPreference("_primary"); } applyRouting(ed, srb::setRouting); applyGroupBy(srb); applyOrderBys(srb); applyFacets(srb); applyAggregations(srb); applyQueries(srb); applyPostAggreationQuery(srb); applyLimit(srb); if (logQuery) { IndexAccess.LOG.INFO(srb); } return srb; }