How to store data in elasticsearch

I want to use elasticsearch on my backend and I have few questions:

  1. My DB contains semi-structured data of products, i.e. each product may have different attributes inside it.
    I want to be able to search a text on most of the fields and also search a text on one specific field.
    What is the recommended way to store the document in ES ? to store all text in on field (maybe using _all feature) or leave it in different fields.
    My concern of different fields is that I might have a lot of indexes (because I have many different product attributes)

  2. I'm using couchbase as my main DB.
    What is the recommended way to move the documents from it to ES, assuming I need to make some modifications on the document ?
    To update the index from my code explicitly or use external tool ?