An additional interface · off by default

OpenSearch clients.
The same Rust engine.

Connect trusted local applications to a defined read-only API without replacing Koha’s native RustSearch integration. This is an experimental v0.1 interface, not a separate plugin.

What is included

Search and count the existing bibliographic index using supported match_all, match_none, match, match_phrase, term, ids and bool requests. Exact totals, bounded pagination and selected stored fields are available.

Verified with opensearch-py 3.2.0 on ARM64 and x86-64. There is no Elasticsearch compatibility claim and no OpenSearch or Elasticsearch server requirement.

Enable only when needed

  1. Update the existing plugin with the latest KPZ; do not uninstall it.
  2. Extract its newly bundled server setup. For a compatible schema-7 installation, add --update --with-opensearch-api to the bundled setup command. This builds and tests the optional component but leaves the listener off.
  3. For the selected instance’s RustSearch systemd service, add the explicit settings shown below, choose an unused loopback port, reload systemd and restart that service.
[Service]
Environment=RUSTSEARCH_OPENSEARCH_ENABLED=1
Environment=RUSTSEARCH_OPENSEARCH_BIND_ADDR=127.0.0.1:7889

Set RUSTSEARCH_OPENSEARCH_ENABLED=0 and restart to disable it. Normal builds and installations keep it off. Existing native search stays on its configured port; the default is 7888. No index migration is needed. Production schema 6 remains prohibited.

The active listener serves /opensearch/v1/docs for interactive Swagger and /opensearch/v1/openapi.json for its specification. The public Swagger reference is documentation only; it is not a publicly hosted search service. For remote administration, access the loopback listener through an SSH tunnel.

A small, explicit contract

Search requests must set _source: false. The existing indexes do not retain original JSON source; use stored fields for title, author and the other documented values. Maximum page size is 100 and the result window is 10,000. Native Tantivy scoring is retained.

Writes, bulk ingestion, mappings, aggregations, sorting, scrolling and cluster administration are outside v0.1. Unsupported requests fail explicitly. Compatibility with Koha’s Elasticsearch adapter has not been established.

Trusted local integrations only: the API has no authentication and does not apply Koha user permissions or OPAC suppression. Do not expose it as a public catalog endpoint. Koha’s existing native adapter retains its own visibility checks.

Full setup guide and client example ↓