A minimal, performant Elasticsearch REST client wrapper for Clojure built on the official Java 9.x client.
Spandex is a Clojure library that wraps Elasticsearch's official Java REST client, providing a minimal and performant interface for interacting with Elasticsearch clusters. It solves the problem of using Elasticsearch from Clojure without the overhead and complexity of the legacy transport client, offering modern features like connection pooling, load balancing, and failover.
Clojure developers who need to integrate Elasticsearch into their applications, particularly those who value performance, simplicity, and staying close to Elasticsearch's native API.
Developers choose Spandex because it combines the reliability of Elasticsearch's official Java client with a clean, idiomatic Clojure API, avoiding DSL bloat while providing essential utilities like async support, bulk operations, and scroll queries.
Elasticsearch client for Clojure (built on new ES 9.x java client)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Acts as a thin wrapper over Elasticsearch's official Java REST client, ensuring high performance with negligible added latency, as highlighted in the README's focus on being lightweight.
Uses RING-inspired request maps and works directly with Clojure data structures, making it natural for Clojure developers without introducing DSL layers.
Offers both callback-based async requests and seamless core.async integration, enabling efficient non-blocking operations for scalable applications.
Includes helpers like bulk-chan and scroll-chan with configurable flushing and backpressure, simplifying complex operations like large dataset handling.
Requires in-depth knowledge of Elasticsearch's native JSON API since it avoids abstraction layers, which can be challenging for newcomers or teams seeking more guided interfaces.
Configuring HTTPS connections with SSH tunneling involves manual SSH configuration and client options, as detailed in the README, which can be error-prone and time-consuming.
Lacks higher-level abstractions like automatic object mapping or index management utilities, necessitating more manual code for common tasks beyond basic CRUD.