/** * Recursively collects all the bridge-defined fields for the given type and its embeddables. */ private Set<BridgeDefinedField> getAllBridgeDefinedFields(EntityIndexBinding binding) { Set<BridgeDefinedField> bridgeDefinedFields = new HashSet<>(); collectPropertyLevelBridgeDefinedFields( binding.getDocumentBuilder().getMetadata(), bridgeDefinedFields ); return bridgeDefinedFields; }
@Override public ScopedAnalyzerReference getAnalyzerReference(IndexedTypeIdentifier type) { EntityIndexBinding entityIndexBinding = getSafeIndexBindingForEntity( type ); DocumentBuilderIndexedEntity builder = entityIndexBinding.getDocumentBuilder(); return builder.getAnalyzerReference(); }
private DocumentFieldMetadata findFieldMetadata(Iterable<EntityIndexBinding> targetedBindings, String fieldPath) { if ( fieldPath == null ) { return null; } for ( EntityIndexBinding indexBinding : targetedBindings ) { DocumentFieldMetadata metadata = indexBinding.getDocumentBuilder().getTypeMetadata().getDocumentFieldMetadataFor( fieldPath ); if ( metadata != null ) { return metadata; } } return null; }
/** * Create a root mapping builder. * @param binding The Hibernate Search binding to be translated in an Elasticsearch mapping * @param elasticsearchMapping The Elasticsearch mapping on which properties should be added */ public ElasticsearchMappingBuilder(EntityIndexBinding binding, TypeMapping elasticsearchMapping) { this.binding = binding; this.parent = null; this.typeMetadata = binding.getDocumentBuilder().getTypeMetadata(); this.pathComponentExtractor = new PathComponentExtractor(); this.elasticsearchMapping = elasticsearchMapping; }
private BridgeDefinedField findBridgeDefinedField(Iterable<EntityIndexBinding> targetedBindings, String fieldPath) { if ( fieldPath == null ) { return null; } for ( EntityIndexBinding indexBinding : targetedBindings ) { TypeMetadata typeMetadata = indexBinding.getDocumentBuilder().getTypeMetadata(); BridgeDefinedField bridgeDefinedField = typeMetadata.getBridgeDefinedFieldMetadataFor( fieldPath ); if ( bridgeDefinedField != null ) { return bridgeDefinedField; } } return null; }
private Object getId(JsonObject hit, EntityIndexBinding binding) { Document tmp = new Document(); tmp.add( new StringField( "id", DocumentIdHelper.getEntityId( hit.get( "_id" ).getAsString() ), Store.NO) ); Object id = binding.getDocumentBuilder().getIdBridge().get( "id", tmp ); return id; }
public QueryBuildingContext(ExtendedSearchIntegrator factory, ScopedAnalyzerReference originalAnalyzerReference, ScopedAnalyzerReference queryAnalyzerReference, IndexedTypeIdentifier indexBoundType) { this.factory = factory; this.originalAnalyzerReference = originalAnalyzerReference; this.queryAnalyzerReference = queryAnalyzerReference; this.entityType = indexBoundType; EntityIndexBinding indexBinding = factory.getIndexBinding( indexBoundType ); if ( indexBinding == null ) { throw new AssertionFailure( "Class is not indexed: " + indexBoundType ); } documentBuilder = indexBinding.getDocumentBuilder(); }
@Override public ScopedAnalyzerReference getAnalyzerReference(IndexedTypeIdentifier type) { EntityIndexBinding entityIndexBinding = getSafeIndexBindingForEntity( type ); DocumentBuilderIndexedEntity builder = entityIndexBinding.getDocumentBuilder(); return builder.getAnalyzerReference(); }
@Override protected Set<IndexManager> getIndexManagers(EntityIndexBinding binding) { Set<IndexManager> indexManagers = super.getIndexManagers( binding ); for ( IndexManager indexManager : indexManagers ) { if ( !( indexManager instanceof ElasticsearchIndexManager ) ) { throw LOG.cannotRunEsQueryTargetingEntityIndexedWithNonEsIndexManager( binding.getDocumentBuilder().getTypeIdentifier(), rawSearchPayload.toString() ); } } return indexManagers; }
private static TypeMetadata getLeafTypeMetadata(EntityIndexBinding indexBinding, String[] fieldNameParts) { TypeMetadata parentMetadata = indexBinding.getDocumentBuilder().getMetadata(); for ( int i = 0; i < fieldNameParts.length - 1; i++ ) { for ( EmbeddedTypeMetadata embeddedTypeMetadata : parentMetadata.getEmbeddedTypeMetadata() ) { if ( embeddedTypeMetadata.getEmbeddedFieldName().equals( fieldNameParts[i] ) ) { parentMetadata = embeddedTypeMetadata; break; } } } return parentMetadata; }
private DocumentBuilderIndexedEntity getDocumentBuilder(IndexedTypeIdentifier entityType, ExtendedSearchIntegrator extendedIntegrator) { IndexedTypeSet indexedEntities = extendedIntegrator.getIndexedTypesPolymorphic( entityType.asTypeSet() ); if ( indexedEntities.size() > 0 ) { return extendedIntegrator.getIndexBinding( indexedEntities.iterator().next() ).getDocumentBuilder(); } else { return null; } }
RootEntityMetadata(Class<?> rootEntity, ExtendedSearchIntegrator extendedIntegrator) { this.rootEntity = rootEntity; EntityIndexBinding provider = extendedIntegrator.getIndexBindings().get( rootEntity ); if ( provider == null ) { throw new AssertionFailure( "Provider not found for class: " + rootEntity ); } this.mappedSubclasses = provider.getDocumentBuilder().getMappedSubclasses(); } }
private TypeMetadata getLeafTypeMetadata(Class<?> type, String... propertyPath) { EntityIndexBinding entityIndexBinding = getIndexBinding( searchFactory, type ); TypeMetadata leafTypeMetadata = entityIndexBinding.getDocumentBuilder().getTypeMetadata(); for ( int i = 0; i < propertyPath.length; i++ ) { Iterable<EmbeddedTypeMetadata> embeddedTypeMetadata = leafTypeMetadata.getEmbeddedTypeMetadata(); TypeMetadata metadata = getEmbeddedTypeMetadata( embeddedTypeMetadata, propertyPath[i] ); if ( metadata != null ) { leafTypeMetadata = metadata; } } return leafTypeMetadata; }
private AddLuceneWork createAddLuceneWork(String tenantIdentifier, Object entity, InstanceInitializer sessionInitializer, ConversionContext conversionContext, Serializable id, EntityIndexBinding entityIndexBinding) { DocumentBuilderIndexedEntity docBuilder = entityIndexBinding.getDocumentBuilder(); String idInString = idInString( conversionContext, id, docBuilder.getTypeIdentifier(), docBuilder ); // depending on the complexity of the object graph going to be indexed it's possible // that we hit the database several times during work construction. return docBuilder.createAddWork( tenantIdentifier, docBuilder.getTypeIdentifier(), entity, id, idInString, sessionInitializer, conversionContext ); }
private String objectIdInString(IndexedTypeIdentifier typeKey, Serializable id, ConversionContext conversionContext) { EntityIndexBinding indexBindingForEntity = typesRegistry.get( typeKey ); if ( indexBindingForEntity == null ) { throw new SearchException( "Unable to find entity type metadata while deserializing: " + typeKey.getName() ); } DocumentBuilderIndexedEntity documentBuilder = indexBindingForEntity.getDocumentBuilder(); return documentBuilder.objectToString( documentBuilder.getIdFieldName(), id, conversionContext ); }
private String objectIdInString(IndexedTypeIdentifier typeKey, Serializable id, ConversionContext conversionContext) { EntityIndexBinding indexBindingForEntity = typesRegistry.get( typeKey ); if ( indexBindingForEntity == null ) { throw new SearchException( "Unable to find entity type metadata while deserializing: " + typeKey.getName() ); } DocumentBuilderIndexedEntity documentBuilder = indexBindingForEntity.getDocumentBuilder(); return documentBuilder.objectToString( documentBuilder.getIdFieldName(), id, conversionContext ); }
public static DocumentBuilderIndexedEntity getDocumentBuilder(String className, ExtendedSearchIntegrator searchIntegrator) { IndexedTypeIdentifier keyFromName = searchIntegrator.getIndexBindings().keyFromName( className ); EntityIndexBinding entityIndexBinding = searchIntegrator.getIndexBinding( keyFromName ); if ( entityIndexBinding == null ) { throw new SearchException( "No Lucene configuration set up for: " + keyFromName.getName() ); } return entityIndexBinding.getDocumentBuilder(); }
@Override public IndexMetadata translate(URLEncodedString indexName, Collection<EntityIndexBinding> descriptors, ExecutionOptions executionOptions) { IndexMetadata indexMetadata = new IndexMetadata(); indexMetadata.setName( indexName ); ElasticsearchIndexSettingsBuilder settingsBuilder = new ElasticsearchIndexSettingsBuilder(); for ( EntityIndexBinding descriptor : descriptors ) { String typeName = descriptor.getDocumentBuilder().getTypeIdentifier().getName(); TypeMapping mapping = translate( descriptor, settingsBuilder, executionOptions ); indexMetadata.putMapping( typeName, mapping ); } indexMetadata.setSettings( settingsBuilder.build() ); return indexMetadata; }
private Object getUnwrappedBridge(Class<?> clazz, String string, Class<?> expectedBridgeClass) { FieldBridge bridge = getExtendedSearchIntegrator().getIndexBindings().get( clazz ).getDocumentBuilder() .getTypeMetadata().getDocumentFieldMetadataFor( string ).getFieldBridge(); return unwrapBridge( bridge, expectedBridgeClass ); }
private Object getUnwrappedBridge(Class<?> clazz, String string, Class<?> expectedBridgeClass) { FieldBridge bridge = sfHolder.getSearchFactory().getIndexBindings().get( clazz ).getDocumentBuilder() .getTypeMetadata().getDocumentFieldMetadataFor( string ).getFieldBridge(); return unwrapBridge( bridge, expectedBridgeClass ); }