My application is a cache of xml documents. I'm using ES to index this cache (currently just a concurrentmap), so the user can send requests to get results or delete documents that are no longer valid.
This app is running on Linux and Tomcat 7. It's currently just one node (server), and I'm adding all ES jars needed in my WEB-INF folder, and I'm starting the ES node as follows:
this.node = NodeBuilder.nodeBuilder().settings(s).local(true).data(true).client(false).node();
this.client = this.node.client();
When we develop the cluster version, every app node will be an ES node.
All tests I'm performing are giving good results, and the only issue I'm finding is with marvel (I can't see the cluster from marvel, I need to explore this a bit more).
Our app is usually installed on a client server, this client installs hardware and software, so embedding ES I avoid my client to install one more piece of software.
I don't have any GC issues because our app is running under Zing JVM.
Un app update implies stopping it. So I can also update ES when updating my app. No reason to update just ES. If I find a severe bug on ES, I can stop and update my app without problems.
And looking for information about this issue with marvel I came across some posts telling that embedding ES in production is not recommended.
So before taking any step forward, I'd really appreciate any opinion from ES experts.