﻿---
title: Ruby
description: The elasticsearch Rubygem provides a low-level client for communicating with an Elasticsearch cluster, fully compatible with other official clients. More...
url: https://www.elastic.co/elastic/docs-builder/docs/2696/reference/elasticsearch/clients/ruby
products:
  - Elasticsearch
  - Elasticsearch Client
  - Elasticsearch Ruby Client
---

# Ruby
The `elasticsearch` [Rubygem](http://rubygems.org/gems/elasticsearch) provides a low-level client for communicating with an Elasticsearch cluster, fully compatible with other official clients.
More documentation is hosted in [Github](https://github.com/elastic/elasticsearch-ruby) and [RubyDoc](http://rubydoc.info/gems/elasticsearch).
Refer to the [*Getting started*](https://www.elastic.co/elastic/docs-builder/docs/2696/reference/elasticsearch/clients/ruby/getting-started) page for a step-by-step quick start with the Ruby client.

## Features

- Pluggable logging and tracing
- Pluggable connection selection strategies (round-robin, random, custom)
- Pluggable transport implementation, customizable and extendable
- Pluggable serializer implementation
- Request retries and dead connections handling
- Node reloading (based on cluster state) on errors or on demand
- Modular API implementation
- 100% REST API coverage


## Transport and API

The `elasticsearch` gem combines two separate Rubygems:
- [`elastic-transport`](https://github.com/elastic/elastic-transport-ruby/) - provides an HTTP Ruby client for connecting to the Elasticsearch cluster. Refer to the documentation: [Transport](https://www.elastic.co/elastic/docs-builder/docs/2696/reference/elasticsearch/clients/ruby/transport)
- [`elasticsearch-api`](https://github.com/elastic/elasticsearch-ruby/tree/main/elasticsearch-api) - provides a Ruby API for the Elasticsearch RESTful API.

Please consult their respective documentation for configuration options and technical details.
Notably, the documentation and comprehensive examples for all the API methods are contained in the source, and available online at [Rubydoc](http://rubydoc.info/gems/elasticsearch-api/Elasticsearch/API/Actions).
Keep in mind, that for optimal performance, you should use an HTTP library which supports persistent ("keep-alive") HTTP connections.