Is there any explicit hibernatesearch java api to feed the data to Elastic search?
AFAIK you can just use the standard HibernateSearch API to send your data to Elasticsearch instead of Lucene. It's pretty much transparent for you. At query time, you can do both. Use standard HibernateSearch queries or use native elasticsearch queries:
FullTextEntityManager fullTextEm = Search.getFullTextEntityManager(entityManager);
QueryDescriptor query = ElasticsearchQueries.fromJson(
"{ 'query': { 'match' : { 'lastName' : 'Brand' } } }");
List<?> result = fullTextEm.createFullTextQuery(query, GolfPlayer.class).getResultList();
You can also get an access to the Elasticsearch Client.
Are there any challenges to use Hibernate search and elastic search together?
I think the Hibernate Search team is doing a very good job. It includes transparency like listing the known limitations of the implementation.