Some of these points are valid, such as the verbose query language, horrible diagnostics, as well as the ease of making serious, irreversible mistakes. If you're starting ElasticSearch, I highly recommend:
- Making daily backups with S3.
- Having a replica physical cluster (note, not a replica node). Because replica nodes can corrupt each other.
- Forget about rivers. Implement your own. What I did was push row ids into a Redis list, and when the list becomes filled with 100 IDs, I query all 100 items from my database, and index them into ElasticSearch. Nothing complicated.