SYSTEM Cited by 1 source
elastic4s¶
elastic4s (github.com/sksamuel/elastic4s) is an
unofficial Scala client for Elasticsearch by Stephen Samuel, long
popular in the Scala ecosystem for its idiomatic type-safe DSL,
Option-returning APIs (vs Java's nulls), Scala Duration
integration, and Akka-Http / PlayJson / Circe / Jackson codec
support.
Positioning¶
| Axis | elastic4s | Official Java API Client |
|---|---|---|
| Scala ergonomics | Yes | No (wrap in Scala code) |
| Tracks Elastic release cadence | Lags | Yes (maintained by Elastic) |
| Covers new REST features | Partially | Fully |
| License | Apache-2.0 | Apache-2.0 |
| Maintenance | Single maintainer | Elastic |
Seen in¶
-
sources/2023-11-19-zalando-migrating-from-elasticsearch-7-to-8 — rejected alternative for Zalando's Origami application during the ES 7.17→8.x upgrade. Two load-bearing reasons for rejection:
-
Release-cadence lag: Elastic had released ES 8.7 while elastic4s was still on 8.5.4 (compatible with ES up to 8.6). Zalando was concerned about long-term maintenance and project bus-factor: "it wouldn't just disappear into thin air in the unlikely case when its creator would suddenly want to quit" (about the official client; the implicit inverse concern about elastic4s).
- No kNN search DSL: the library had not shipped a typed DSL for the ES 8.0 approximate kNN search feature. Queries could still be sent as raw JSON, but "it was not a pretty option." Since approximate-kNN was the single-most load-bearing feature driving the upgrade, this made elastic4s non-viable. (Source: sources/2023-11-19-zalando-migrating-from-elasticsearch-7-to-8)
The elastic4s rejection is a canonical instance of an unofficial client's release-cadence lag forcing a migration to the official client when a critical new feature ships upstream. The library has since (post-2023) added kNN DSL support; the Zalando decision is therefore time-bound.
Gaps in the wiki record¶
- No post-2023 Zalando reassessment of elastic4s.
- No disclosure of how many Scala-on-ES shops have made the same transition for the same reason.