Projection of _ fields


#1

Can siblings of field _source (e.g. _type) found in Elasticsearch indexed documents be projected in (Hibernate Search) query results?


#2

Not currently. However, we expose a few projections that should address most use cases. In particular, to fetch the type, you can use the Hibernate Search specific projection org.hibernate.search.elasticsearch.ElasticsearchProjectionConstants#OBJECT_CLASS, which will give your the class of the indexed entity.

For example:

import static org.hibernate.search.elasticsearch.ElasticsearchProjectionConstants;

...

FullTextQuery<?> query = ...;
query.setProjection( ElasticsearchProjectionConstants.OBJECT_CLASS, ElasticsearchProjectionConstants.ID );

List<List<?>> results = (List<List<?>>) query.getResultList();
for ( List<?> projection : results ) {
   Class<?> objectClass = (Class<?>) projection.get( 0 );
   Object objectId = projection.get( 1 );
   // ... do something with the data ...
}