final MultiGetRequest mget = new MultiGetRequest(); mget.add(searchguardIndex, "sg", event); mget.refresh(true); mget.realtime(true);
public static Request multiGet(MultiGetRequest multiGetRequest) { Request request = new Request(HttpMethod.POST.name(), "/_mget"); Params parameters = new Params(request); parameters.withPreference(multiGetRequest.preference()); parameters.withRealtime(multiGetRequest.realtime()); parameters.withRefresh(multiGetRequest.refresh()); request.setEntity(createEntity(multiGetRequest, REQUEST_BODY_CONTENT_TYPE)); return request; }
public static void parseIds(XContentParser parser, List<Item> items) throws IOException { parseIds(parser, items, null, null, null, null, null); }
private <T> MultiGetResponse getMultiResponse(Query searchQuery, Class<T> clazz) { String indexName = !isEmpty(searchQuery.getIndices()) ? searchQuery.getIndices().get(0) : getPersistentEntityFor(clazz).getIndexName(); String type = !isEmpty(searchQuery.getTypes()) ? searchQuery.getTypes().get(0) : getPersistentEntityFor(clazz).getIndexType(); Assert.notNull(indexName, "No index defined for Query"); Assert.notNull(type, "No type define for Query"); Assert.notEmpty(searchQuery.getIds(), "No Id define for Query"); MultiGetRequest request = new MultiGetRequest(); if (searchQuery.getFields() != null && !searchQuery.getFields().isEmpty()) { searchQuery.addSourceFilter(new FetchSourceFilter(toArray(searchQuery.getFields()), null)); } for (String id : searchQuery.getIds()) { MultiGetRequest.Item item = new MultiGetRequest.Item(indexName, type, id); if (searchQuery.getRoute() != null) { item = item.routing(searchQuery.getRoute()); } request.add(item); } try { return client.multiGet(request); } catch (IOException e) { throw new ElasticsearchException("Error while multiget for request: " + request.toString(), e); } }
protected MultiSearchRequest toMultiSearchRequest(final RestRequest request) throws Exception { final MultiGetRequest multiGetRequest = new MultiGetRequest(); multiGetRequest.listenerThreaded(false); multiGetRequest.refresh(request.paramAsBoolean("refresh", multiGetRequest.refresh())); multiGetRequest.preference(request.param("preference")); multiGetRequest.realtime(request.paramAsBoolean("realtime", null)); multiGetRequest.ignoreErrorsOnGeneratedFields(request.paramAsBoolean("ignore_errors_on_generated_fields", false)); multiGetRequest.add(request.param("index"), request.param("type"), sFields, defaultFetchSource, request.param("routing"), RestActions.getRestContent(request), settings.getAsBoolean(AbstractACRestFilter.REST_ACTION_MULTI_ALLOW_EXPLICIT_INDEX, true)); msearch.listenerThreaded(false); for (final Iterator<Item> iterator = multiGetRequest.iterator(); iterator.hasNext();) { final Item item = iterator.next();
public MultiGetRequestBuilder add(MultiGetRequest.Item item) { request.add(item); return this; }
@Override public Iterator<Edge> edges(Object[] ids) { MultiGetRequest request = new MultiGetRequest().refresh(refresh); for (Object id : ids) request.add(indexName, null, id.toString()); MultiGetResponse responses = client.multiGet(request).actionGet(); ArrayList<Edge> elements = new ArrayList<>(ids.length); for (MultiGetItemResponse getResponse : responses) { GetResponse response = getResponse.getResponse(); if (!response.isExists()) throw Graph.Exceptions.elementNotFound(Edge.class, response.getId()); elements.add(createEdge(response)); } return elements.iterator(); }
/** * Should a refresh be executed before this get operation causing the operation to * return the latest value. Note, heavy get should not set this to {@code true}. Defaults * to {@code false}. */ public MultiGetRequestBuilder setRefresh(boolean refresh) { request.refresh(refresh); return this; }
public MultiGetRequestBuilder setRealtime(boolean realtime) { request.realtime(realtime); return this; } }
/** * Execute a {@link MultiGetRequest} against the {@literal multi-get} API to retrieve multiple documents by id. * * @param consumer never {@literal null}. * @see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-get.html">Multi Get API on * elastic.co</a> * @return the {@link Flux} emitting the {@link GetResult result}. */ default Flux<GetResult> multiGet(Consumer<MultiGetRequest> consumer) { MultiGetRequest request = new MultiGetRequest(); consumer.accept(request); return multiGet(request); }
/** * Sets the preference to execute the search. Defaults to randomize across shards. Can be set to * {@code _local} to prefer local shards, {@code _primary} to execute only on primary shards, or * a custom value, which guarantees that the same order will be used across different requests. */ public MultiGetRequestBuilder setPreference(String preference) { request.preference(preference); return this; }
} else if (token == Token.START_ARRAY) { if ("docs".equals(currentFieldName)) { parseDocuments(parser, this.items, defaultIndex, defaultType, defaultFields, defaultFetchSource, defaultRouting, allowExplicitIndex); } else if ("ids".equals(currentFieldName)) { parseIds(parser, this.items, defaultIndex, defaultType, defaultFields, defaultFetchSource, defaultRouting); } else { final String message = String.format(
protected MultiSearchRequest toMultiSearchRequest(final MultiGetRequest multiGetRequest) { final MultiSearchRequest msearch = new MultiSearchRequest(); msearch.copyContextFrom(multiGetRequest); msearch.listenerThreaded(multiGetRequest.listenerThreaded()); for (final Iterator<Item> iterator = multiGetRequest.iterator(); iterator.hasNext();) { final Item item = iterator.next(); final SearchRequest st = new SearchRequest(); st.routing(item.routing()); st.indices(item.indices()); st.types(item.type()); st.listenerThreaded(false); st.preference(multiGetRequest.preference()); st.source(SearchSourceBuilder.searchSource().query(new IdsQueryBuilder(item.type()).addIds(item.id()))); msearch.add(st); } return msearch; }
count = ""+((MultiGetRequest) request).getItems().size();
public static void parseDocuments(XContentParser parser, List<Item> items) throws IOException { parseDocuments(parser, items, null, null, null, null, null, true); }
public MultiGetRequestBuilder add(String index, @Nullable String type, String... ids) { for (String id : ids) { request.add(index, type, id); } return this; }
/** * Should a refresh be executed before this get operation causing the operation to * return the latest value. Note, heavy get should not set this to <tt>true</tt>. Defaults * to <tt>false</tt>. */ public MultiGetRequestBuilder setRefresh(boolean refresh) { request.refresh(refresh); return this; }
final MultiGetRequest multiGetRequest = new MultiGetRequest(request); for (GetRequest getRequest : existingDocsRequests) { multiGetRequest.add( new MultiGetRequest.Item(getRequest.index(), getRequest.type(), getRequest.id()) .routing(getRequest.routing())
public MultiGetRequestBuilder setRealtime(boolean realtime) { request.realtime(realtime); return this; } }
public MultiGetRequestBuilder(ElasticsearchClient client, MultiGetAction action) { super(client, action, new MultiGetRequest()); }