class TableMapStore implements MapStore<String, Table> {

    @Override
    public Set<String> loadAllKeys() {
        logger.info("Load all keys called");
        SearchResponse response = elasticsearchConnection.getClient()
                .prepareSearch(TABLE_META_INDEX)
                .setTypes(TABLE_META_TYPE)
                .setQuery(QueryBuilders.matchAllQuery())
                .setSearchType(SearchType.SCAN)
                .setScroll(new TimeValue(30, TimeUnit.SECONDS))
                .setNoFields()
                .execute()
                .actionGet();
        Set<String> ids = Sets.newHashSet();
        while (true) {
            response = elasticsearchConnection.getClient().prepareSearchScroll(response.getScrollId())
                    .setScroll(new TimeValue(60000))
                    .execute()
                    .actionGet();
            SearchHits hits = response.getHits();
            for (SearchHit hit : hits) {
                ids.add(hit.getId());
            }
            if (0 == response.getHits().hits().length) {
                break;
            }
        }
        logger.info("Loaded value count: " + ids.size());
        return ids;
    }

    public  TableMapStore(ElasticsearchConnection elasticsearchConnection);

}