Getting Started
-
Check prerequisites
- Bun v1.0 or later
- A search engine instance — Elasticsearch (v7+), OpenSearch, or Meilisearch — with at least one index
-
Install dependencies
Clone the repository and install dependencies:
Terminal window bun install -
Configure your indexes
Copy the example config and edit it with your search engine details:
Terminal window cp config.example.yaml config.yamlA minimal config looks like this:
port: 3000indexes:my_index:engine: elasticsearchhost: https://localhost:9200apiKey: ${ES_API_KEY}indexName: my_es_indexEach key under
indexesbecomes a URL handle — the config above creates endpoints at/my_index/search,/my_index/autocomplete, etc.See the Configuration guide for the full reference.
-
Start the server
Terminal window # Productionbun run start# Development (auto-reload on changes)bun run dev -
Verify it’s working
Check the health endpoint:
Terminal window curl http://localhost:3000/health# {"status":"ok","cache":"disabled"}List configured indexes:
Terminal window curl http://localhost:3000/indexes# {"indexes":[{"handle":"my_index","engine":"elasticsearch"}]}Run a search:
Terminal window curl "http://localhost:3000/my_index/search?q=hello"You can also browse the interactive API docs at http://localhost:3000/openapi.
Next steps
Section titled “Next steps” Configuration Full config file reference with all index settings.
Search endpoint All query parameters, response format, and examples.
Filters String, array, boolean, and range filter types.
Field aliases Rename fields for API consumers.
Caching Redis caching and gzip compression.
Eden Treaty Client Type-safe API client for TypeScript projects.