Use Containable behaviour rather than recursive. It will give you control down to individual field level. Using it now, at an early stage, will make it second nature later.
If you get confused building the conditions, build it outside the method call.
Try to avoid the use of double quotes except where you need to include escaped or parsed data - they're slower.
$conditions = array(
'EslUserresult.esl_songID' => 'EslLyric.id',
'EslLyric.song_name LIKE' => '%'.$esl_keyword.'%'
)
$this->EslUserresult->contain('EslLyric.text');
$result = $this->EslUserresult->find('all',array('conditions'=>$conditions));