I would like to understand the internals of ElasticSearch by digging into code. is there any docs like JAVA docs or something else to find out what each class does..
If recommend just diving in. Elasticsearch and Lucene have some rather well thought out code and I've found it easy to dive in. You might want a tutorial on using Lucene as a Java library first as Elasticsearch wraps Lucene.
Yeah, you just have to dive in. Some classes have Javadocs but there isn't anything enforcing it and we're not sticklers for it on code review. I think when I was getting started I sent some pull requests that just added javadocs do things. That way there would be more docs and a committer would double check my understanding.
Depending one what you are looking for you might only see Lucene tangentially. For Lucene - just keep in mind that it uses its own conventions that are different from the standard Java conventions. Elasticsearch ends up using a blend of Lucene and standard Java conventions.
If you have any questions feel free to ask here. There are around a dozen active users of this forum who consistently work on the code. Its a full time job for many of us.
One more thing: I'd start reading the master branch rather than 1.7 branch. It isn't what everyone is using but its "the future" so it'll be a bit easier to read. And its where we'll make the most changes. Lots of work is done there and backported to the 2.x branches.
Thanks.. Will definitely reach out when help is need .