Template with types having has-parent relationship

I am using elasticsearch 1.7.0

My types are as follows
Account - id, accno,name,address
Child 1: Contact- name, email
Child 2: Phone - phno

I am looking for an efficient way of making a search with following needs

  1. Apply AND condition on all search strings entered (General search with single text field)
  2. If a match is found in child, response should have the following
    Need to return parent
    Child in inner-hits
    Highlight which highlights all search strings
  3. If all are matching in parent, just return parent with highlight
  4. If match is found in child+parent, response same as 2