Config-driven
Define indexes in a single YAML file with environment variable interpolation. Configure field weights, searchability, and aliases in one place.
Talking directly to Elasticsearch (or OpenSearch, or Meilisearch) from a frontend means every project needs to learn the query DSL, handle auth, shape responses, and deal with engine-specific quirks. A thin API layer in between solves this:
?q=&filters=) instead of constructing Elasticsearch JSON queries. Facets, sorting, highlighting, and pagination just work.fetch call all plug in with minimal glue code.title, date) while the underlying engine keeps its own mapping (dc.title.keyword, dateCreated). Translation is automatic.Config-driven
Define indexes in a single YAML file with environment variable interpolation. Configure field weights, searchability, and aliases in one place.
Full-text search
Pagination, sorting, highlighting, facets, filters, field boosts, histograms, and spelling suggestions out of the box.
Geo map
Aggregate geo-located documents into tile grid groups with configurable precision and bounding boxes.
Field aliases
Expose consumer-friendly field names while keeping your Elasticsearch mapping unchanged. Translation is automatic and bidirectional.
InstantSearch compatible
Drop-in InstantSearch.js support — plug in SearchBox, RefinementList, Hits, Pagination, and more with a small custom search client.
Caching & compression
Optional Redis caching with short TTLs, Cache-Control headers for browser/CDN layering, and gzip compression. Zero config when not needed.