Skip to content

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-8rejected 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.
Last updated · 501 distilled / 1,218 read