Regarding updates, you can use the Update API for partial updates, and include a script to do things like "counter += 1" or "add value to existing array".
Internally it is still reindexing the entire document, but from your application's perspective, the Update API is a lot friendlier.
http://www.elasticsearch.org/guide/en/elasticsearch/referenc...