This documentation contains work-in-progress information for future Elastic Stack and Cloud releases. Use the version selector to view supported release docs. It also contains some Elastic Cloud serverless information. Check out our serverless docs for more details.
Object life cycles and thread safety
editObject life cycles and thread safety
editThere are five kinds of objects in the Java API Client with different life cycles:
- Object mapper
- Stateless and thread-safe, but can be costly to create. It’s usually a singleton that is created at application startup and used to create the transport.
- Transport
- Thread-safe, holds network resources through the underlying HTTP client. A transport object is associated with an Elasticsearch cluster and has to be explicitly closed to release the underlying resources such as network connections.
- Clients
- Immutable, stateless and thread-safe. These are very lightweight objects that just wrap a transport and provide API endpoints as methods. Closing a client closes the underlying transport.
- Builders
-
Mutable, non thread-safe.
Builders are transient objects that should not be reused after calling
build()
. - Requests & other API objects
- Immutable, thread-safe. If your application uses the same request or same parts of a request over and over, these objects can be prepared in advance and reused across multiple calls over multiple clients with different transports.