@Override public Map<String, Table> loadAll(Collection<String> keys) { logger.info("Load all called for multiple keys"); MultiGetResponse response = elasticsearchConnection .getClient() .prepareMultiGet() .add(TABLE_META_INDEX, TABLE_META_TYPE, keys) .execute() .actionGet(); Map<String, Table> tables = Maps.newHashMap(); for (MultiGetItemResponse multiGetItemResponse : response) { try { Table table = objectMapper.readValue( multiGetItemResponse.getResponse().getSourceAsString(), Table.class); tables.put(table.getName(), table); } catch (Exception e) { throw new RuntimeException("Error getting data for table: " + multiGetItemResponse.getId()); } } logger.info("Loaded value count: " + tables.size()); return tables; }
@Override public void store(String key, Table value) { if (key == null || value == null || value.getName() == null) { throw new RuntimeException(String.format("Illegal Store Request - %s - %s", key, value)); } logger.info("Storing key: " + key); try { elasticsearchConnection .getClient() .prepareIndex() .setIndex(TABLE_META_INDEX) .setType(TABLE_META_TYPE) .setConsistencyLevel(WriteConsistencyLevel.ALL) .setSource(objectMapper.writeValueAsString(value)) .setId(key) .setRefresh(true) .execute() .actionGet(); } catch (JsonProcessingException e) { throw new RuntimeException("Error saving meta: ", e); } }