public List<DOMAIN> getByKeys(Collection<KEY> keys) { if (keys.isEmpty()) { return Collections.emptyList(); } List<DOMAIN> results = new ArrayList<>(); MultiGetRequestBuilder request = client.prepareMultiGet().setPreference("_local"); for (KEY key : keys) { request.add( new MultiGetRequest.Item(getIndexName(), getIndexType(), getKeyValue(key)) .routing(getKeyValue(key)) .fetchSourceContext(FetchSourceContext.FETCH_SOURCE)); } MultiGetResponse response = request.get(); if (response.getResponses() != null) { for (MultiGetItemResponse item : response.getResponses()) { Map<String, Object> source = item.getResponse().getSource(); if (source != null) { results.add(toDoc(source)); } } } return results; }