What's the best way to sync data between MySQL and Elasticsearch

Welcome!

I shared most of my thoughts there: http://david.pilato.fr/blog/2015/05/09/advanced-search-for-your-legacy-application/

Basically, I'd recommend modifying the application layer if possible and send data to elasticsearch in the same "transaction" as you are sending your data to the database.

In my past experience, I was doing your option 1.