Skip to main content

Elasticsearch Compatibility Stubs

LynxDB implements enough Elasticsearch-compatible surface area for log shippers to start, health check, and send bulk data. These endpoints are not a general Elasticsearch API.

Ingest routes

RouteBehavior
POST /_bulkIngest NDJSON bulk events.
POST /{index}/_bulkIngest NDJSON bulk events using {index} as _source when action metadata omits _index.
POST /_data_stream/{name}/_bulkIngest Vector data stream bulk events using {name} as _source.
POST /api/v1/es/_bulkLegacy prefixed bulk alias.
POST /api/v1/es/_data_stream/{name}/_bulkLegacy prefixed data stream bulk alias.
POST /api/v1/es/{index}/_docSingle-document ingest alias.

Probe and setup stubs

RouteResponse shape
GET /Elasticsearch-like cluster handshake.
HEAD /Empty 200 OK handshake.
GET /_xpackBasic license feature summary.
GET /_xpack/licenseActive basic license.
GET /_licenseActive basic license.
GET /_cat/templatesEmpty JSON array.
GET /_cat/indicesEmpty JSON array.
GET /_cluster/healthGreen single-node health response.
GET /_index_template/{name}Empty index template list.
PUT /_index_template/{name}{"acknowledged": true}.
GET /_ilm/policy/{name}Empty 404 policy response.
PUT /_ilm/policy/{name}Unsupported management endpoint response.
GET /_ingest/pipeline/{name}Empty 404 pipeline response.
PUT /_ingest/pipeline/{name}Unsupported management endpoint response.
GET /_nodes/{path}Minimal node HTTP info.
GET /_aliasEmpty aliases object.
GET /_data_stream/{name}Empty data stream list.
PUT /_data_stream/{name}{"acknowledged": true}.
GET /_searchEmpty hits response.
POST /_security/user/_authenticateAuthenticated user stub.
HEAD /{index}Empty 200 OK index probe for shipper health checks.

Every unprefixed probe above has a matching /api/v1/es/... alias where that legacy prefix is useful. New drop-in shipper configs should prefer unprefixed routes.

Explicit non-goals

These stubs do not store Elasticsearch templates, ILM policies, ingest pipelines, aliases, users, roles, or data streams. They only prevent setup probes from blocking log ingest. LynxDB remains append-only: _id values are echoed in responses but are not used for deduplication or updates.

Unsupported management endpoint calls are logged by path so future high-frequency misses can be promoted to explicit stubs.