Elasticsearch Lab
A standalone Elasticsearch 9.5.2 node with Kibana 9.5.2, running on the dev VM since 2026-08-27. It exists so people can experiment with real Elasticsearch without touching the platform’s search engine.
Why it is separate from OpenSearch
Section titled “Why it is separate from OpenSearch”Logrite runs OpenSearch 3.3.1, which forked from Elasticsearch in 2021 and has diverged substantially since. Experiments run against OpenSearch cannot answer questions about Elasticsearch, because several things simply do not exist there:
| Elasticsearch 9.5 | OpenSearch 3.3 | |
|---|---|---|
| Query language | ES|QL (piped: FROM idx | STATS ... BY ...) | PPL — different syntax and semantics |
| Semantic fields | semantic_text, built-in inference endpoints | ML-commons plugin, different API |
| Client libraries | elasticsearch / @elastic/elasticsearch v9 | opensearch-py / @opensearch-project/* |
| Licence | Elastic Licence 2.0 / SSPL / AGPL | Apache 2.0 |
Running both side by side is the point: the lab answers “how does Elasticsearch behave”, while OpenSearch stays the system of record for the platform.
Endpoints
Section titled “Endpoints”| URL | Host port | |
|---|---|---|
| Elasticsearch | https://dev-elastic.logrite.ai | 9201 → 9200 |
| Kibana | https://dev-kibana.logrite.ai | 5602 → 5601 |
Credentials are not published here — this site is publicly reachable. They are in
ELASTICSEARCH.md and CREDENTIALS.md §6 in the private LogriteMasterControl repo.
How it is configured
Section titled “How it is configured”Both are Coolify applications with build_pack=dockerimage: stock upstream images configured
entirely through environment variables, with no Dockerfile and no git repo behind them. This is
the same shape as the opensearch and opensearch-dashboards apps.
| Setting | Value | Why |
|---|---|---|
discovery.type | single-node | One node, no cluster formation |
xpack.security.enabled | true | Authentication is enforced; unauthenticated requests get 401 |
xpack.security.http.ssl.enabled | false | See below |
ES_JAVA_OPTS | -Xms2g -Xmx2g | Matches the OpenSearch heap |
| Container memory limit | 4 GB (ES) · 2 GB (Kibana) | The dev VM has no swap, and a container’s reported memory includes reclaimable page cache |
| Network alias | elasticsearch · kibana | Kibana reaches ES at http://elasticsearch:9200 |
Why HTTP on the wire, unlike OpenSearch
Section titled “Why HTTP on the wire, unlike OpenSearch”Elasticsearch 9 defaults to self-signed TLS on its HTTP layer. That forces --insecure, a CA
file, or verificationMode: none into every client — the friction that OpenSearch’s demo
certificates already impose across this platform. The lab disables HTTP-layer TLS instead and lets
Cloudflare terminate TLS at the tunnel edge, so traffic is encrypted where it crosses the
internet and no client needs special handling. Authentication is unaffected and stays on.
Gotchas
Section titled “Gotchas”Rebuilding it
Section titled “Rebuilding it”ops/elasticsearch/install.sh in LogriteMasterControl recreates both apps, their environment,
volumes, DNS records and tunnel ingress rules from nothing. It is idempotent.
That script exists because a Coolify application lives only as rows in the coolify-db container,
and that database has been lost before — the 2026-08-03 host reflash destroyed every app
definition on the machine.