@Test public void testInitialiseDynamicShardsOnStartup() throws Exception { EntityIndexBinding entityIndexBinding = getExtendedSearchIntegrator().getIndexBindings().get(Animal.class); assertThat(entityIndexBinding.getIndexManagers()).hasSize(0); insertAnimals(elephant, spider, bear); assertThat(entityIndexBinding.getIndexManagers()).hasSize(2); assertThat(getIndexManagersAfterReopening()).hasSize(2); }
@Override public void optimize(Class entityType) { EntityIndexBinding entityIndexBinding = getSafeIndexBindingForEntity(entityType); for (IndexManager im : entityIndexBinding.getIndexManagers()) { im.optimize(); } }
@Test public void testDynamicCreationOfShards() throws Exception { EntityIndexBinding entityIndexBinding = getExtendedSearchIntegrator().getIndexBindings().get(Animal.class); assertThat(entityIndexBinding.getIndexManagers()).hasSize(0); insertAnimals(elephant); assertThat(entityIndexBinding.getIndexManagers()).hasSize(1); insertAnimals(spider); assertThat(entityIndexBinding.getIndexManagers()).hasSize(2); insertAnimals(bear); assertThat(entityIndexBinding.getIndexManagers()).hasSize(2); assertEquals(2, getNumberOfDocumentsInIndex("Animal.Mammal")); assertEquals(1, getNumberOfDocumentsInIndex("Animal.Insect")); }
private Collection<IndexManager> uniqueIndexManagerForTypes(Collection<Class<?>> entityTypes) { HashMap<String, IndexManager> uniqueBackends = new HashMap<String, IndexManager>(entityTypes.size()); for (Class<?> type : entityTypes) { EntityIndexBinding indexBindingForEntity = searchFactoryImplementor.getIndexBinding(type); if (indexBindingForEntity != null) { IndexManager[] indexManagers = indexBindingForEntity.getIndexManagers(); for (IndexManager im : indexManagers) { uniqueBackends.put(im.getIndexName(), im); } } } return uniqueBackends.values(); }
@Override public IndexedTypeDescriptor getIndexedTypeDescriptor(Class<?> entityType) { IndexedTypeDescriptor typeDescriptor; if (indexedTypeDescriptors.containsKey(entityType)) { typeDescriptor = indexedTypeDescriptors.get(entityType); } else { EntityIndexBinding indexBinder = indexBindingForEntities.get(entityType); IndexedTypeDescriptor indexedTypeDescriptor; if (indexBinder == null) { indexedTypeDescriptor = new IndexedTypeDescriptorForUnindexedType(entityType); } else { indexedTypeDescriptor = new IndexedTypeDescriptorImpl( indexBinder.getDocumentBuilder().getMetadata(), indexBinder.getIndexManagers()); } indexedTypeDescriptors.put(entityType, indexedTypeDescriptor); typeDescriptor = indexedTypeDescriptor; } return typeDescriptor; }