@Override public Iterator<SearchResponse> iterator() { return new ScrollIterator(client, searchRequestBuilder); }
@Override public boolean hasNext() { return !allSearchResponsesConsumed(searchResponseFuture.actionGet()); }
public Stream<SearchResponse> stream() { return Iterators.toStream(iterator()); }
public Stream<MessageSearchIndex.SearchResult> search(Collection<MailboxId> mailboxIds, SearchQuery query, Optional<Long> limit) throws MailboxException { SearchRequestBuilder searchRequestBuilder = getSearchRequestBuilder(client, mailboxIds, query, limit); Stream<MessageSearchIndex.SearchResult> pairStream = new ScrollIterable(client, searchRequestBuilder).stream() .flatMap(this::transformResponseToUidStream); return limit.map(pairStream::limit) .orElse(pairStream); }
protected Void doDeleteByQuery(QueryBuilder queryBuilder) { new ScrollIterable(client, client.prepareSearch(aliasName.getValue()) .setTypes(typeName.getValue()) .setScroll(TIMEOUT) .setNoFields() .setQuery(queryBuilder) .setSize(batchSize)) .stream() .map(searchResponse -> deleteRetrievedIds(client, searchResponse)) .forEach(ListenableActionFuture::actionGet); return null; }
@Override public List<User> search(QuotaQuery query) { Stream<User> results = new ScrollIterable(client, prepareSearch(query)) .stream() .flatMap(searchResponse -> Arrays.stream(searchResponse.getHits() .getHits())) .map(hit -> hit.field(USER)) .map(field -> (String) field.getValue()) .map(User::fromUsername) .skip(query.getOffset().getValue()); return query.getLimit().getValue() .map(results::limit) .orElse(results) .collect(Guavate.toImmutableList()); }