@Override public IndexReader open(Class<?>... entities) { if (entities.length == 0) { throw log.needAtLeastOneIndexedEntityType(); } HashMap<String, IndexManager> indexManagers = new HashMap<String, IndexManager>(); for (Class<?> type : entities) { EntityIndexBinding entityIndexBinding = searchFactory.getSafeIndexBindingForEntity(type); IndexManager[] indexManagersForAllShards = entityIndexBinding.getSelectionStrategy().getIndexManagersForAllShards(); for (IndexManager im : indexManagersForAllShards) { indexManagers.put(im.getIndexName(), im); } } IndexManager[] uniqueIndexManagers = indexManagers.values().toArray(new IndexManager[indexManagers.size()]); return MultiReaderFactory.openReader(uniqueIndexManagers); }