class TableMapStore implements MapStore<String, Table> {

    @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;
    }

    public  TableMapStore(ElasticsearchConnection elasticsearchConnection);

}