elastic/elasticsearch-ruby
58.9
Adequate · 19 September 2026
48.2k
lines of production code
Ruby
primary language
1
measurement over time
What this system is
This system is the official Elasticsearch Ruby client library, providing a comprehensive interface to interact with Elasticsearch 9.x clusters. It exposes generated API actions for core data operations, advanced features like machine learning and security, and specialized capabilities such as ES\|QL and serverless project routing. The library also includes helper utilities for bulk processing and scrolling, along with a robust testing infrastructure that validates behavior against official YAML specifications.
How it got here
2013–2016 — modularization and API regeneration
16 changes.
The project underwent a major structural overhaul, splitting the Ruby client into separate \elasticsearch\ and \elasticsearch-api\ gems while updating licensing and build configurations. This period focused on regenerating API action methods to align with the Elasticsearch 9.x specification, introducing structured response objects, and adding comprehensive support for new features like Cross-Cluster Replication, Snapshot/Restore, and Ingest pipelines.
2018–2021 — Elasticsearch 9.x API alignment and test infrastructure
26 changes.
This period focused on regenerating the Ruby client's API actions to align with the Elasticsearch 9.x specification, introducing new endpoints for features like Fleet, Searchable Snapshots, and Text Structure. Concurrently, the team established a robust development and testing ecosystem by implementing YAML-based REST API test runners, comprehensive RSpec integration and unit tests, and automation tools for local cluster management and CI workflows.
2022–2025 — CI infrastructure and API expansion
19 changes.
This period focused on establishing a robust Buildkite CI pipeline with modular scripts and SSL certificates to automate testing across multiple Ruby and transport versions. Simultaneously, the Ruby client expanded significantly by adding generated API actions for new namespaces such as Search Applications, Inference, ES\|QL, and Connectors, alongside helper classes for bulk and scroll operations.
Features
Added Logstash pipeline management API actions
The library now includes generated Ruby client methods for managing Logstash pipelines via the Elasticsearch API. Users can create or update pipelines with \put\_pipeline\, retrieve them with \get\_pipeline\, and remove them with \delete\_pipeline\. These actions support standard query parameters such as \id\, \error\_trace\, \filter\_path\, \human\, and \pretty\, and return a standardized \Elasticsearch::API::Response\ object.
elasticsearch-api/lib/elasticsearch/api/actions/logstash · high confidence
Added Serverless project routing and tags API actions
The Ruby client now includes generated action methods for managing project routing expressions and tags in Elasticsearch Serverless. New methods \create\_routing\, \create\_many\_routing\, \get\_routing\, \get\_many\_routing\, and \delete\_routing\ allow users to create, read, update, and delete routing expressions via the \\_project\_routing\ endpoint. Additionally, the \tags\ action enables retrieving project tags via the \\_project/tags\ endpoint. All these APIs are marked as experimental and are exclusively available in the Serverless environment.
elasticsearch-api/lib/elasticsearch/api/actions/project · high confidence
Added Streams API endpoints for enabling, disabling, and checking status
The Elasticsearch API client now includes actions for the new \streams\ namespace, allowing users to enable and disable specific log streams and check their current status. These new endpoints (\streams.logs\_enable\, \streams.logs\_disable\, and \streams.status\) are marked as experimental, meaning they are not yet ready for production usage and may change or be removed. The \logs\_enable\ action includes a safeguard that prevents enabling a stream if existing indices or data streams match the stream name pattern, returning a conflict error in such cases.
elasticsearch-api/lib/elasticsearch/api/actions/streams · high confidence
Added simulate.ingest API endpoint
The Elasticsearch Ruby client now includes the \simulate.ingest\ action, allowing users to simulate data ingestion by running ingest pipelines against provided documents without actually indexing them. This new endpoint supports specifying an index, a default pipeline, and mapping merge types, enabling users to troubleshoot pipeline interactions or develop pipelines by validating transformed documents against index mappings.
elasticsearch-api/lib/elasticsearch/api/actions/simulate · high confidence
Added vector encoding benchmark and CI helper scripts
This change introduces a new benchmarking tool in \scripts/benchmark-vectors\ that compares the ingestion performance of float32 versus Base64-encoded dense vectors in Elasticsearch, outputting results to \results.json\. It also adds a \scripts/wait-cluster.sh\ utility to help CI pipelines wait for an Elasticsearch cluster to become healthy before running tests.
scripts · high confidence
Adds Buildkite CI certificates for test nodes
The .buildkite/certs directory now includes a set of newly generated SSL/TLS certificates and private keys (CA, testnode, and testnode\_san) to support secure communication in the CI environment.
.buildkite/certs · high confidence
Adds Dangling Indices API actions
The client library now includes generated Ruby methods for managing dangling indices: \list\_dangling\_indices\ (GET \_dangling), \import\_dangling\_index\ (POST \_dangling/{index\_uuid}), and \delete\_dangling\_index\ (DELETE \_dangling/{index\_uuid}). These actions allow users to discover, import, or remove index data that is present on disk but absent from the current cluster state, with the import and delete operations requiring an explicit \accept\_data\_loss\ flag to acknowledge potential data staleness.
_elasticsearch-api/lib/elasticsearch/api/actions/dangling\indices · high confidence
Adds ES\|QL async query and data federation management APIs
The client now exposes new methods for managing asynchronous ES\|QL queries and ES\|QL data federation resources. Users can submit, retrieve, stop, and delete async queries via \async\_query\, \async\_query\_get\, \async\_query\_stop\, and \async\_query\_delete\, with support for the \:drop\_null\_columns\ parameter to control null column handling in results. Additionally, CRUD operations for ES\|QL data federation are available through \put\_data\_source\, \get\_data\_source\, \delete\_data\_source\, \put\_dataset\, \get\_dataset\, \delete\_dataset\, \put\_view\, \get\_view\, and \delete\_view\, along with query monitoring endpoints \get\_query\ and \list\_queries\. These APIs allow integration with external data sources and management of stored views and datasets.
elasticsearch-api/lib/elasticsearch/api/actions/esql · high confidence
Adds Fleet search, multi-search, and global checkpoints API actions
The Ruby client now exposes three new Fleet API actions: \fleet.search\ for running searches that wait for specific checkpoints, \fleet.msearch\ for executing multiple Fleet searches in a single request, and \fleet.global\_checkpoints\ for retrieving current global checkpoints. These endpoints are marked as experimental and are intended for internal use by the Fleet server project.
elasticsearch-api/lib/elasticsearch/api/actions/fleet · high confidence
Adds Ruby client actions for Searchable Snapshots API
The Ruby client now includes generated action methods for the Searchable Snapshots API, specifically \cache\_stats\, \clear\_cache\, \mount\, and \stats\. These new methods allow users to interact with searchable snapshot features such as mounting snapshots, clearing shared caches, and retrieving cache or index statistics directly from the client library.
_elasticsearch-api/lib/elasticsearch/api/actions/searchable\snapshots · high confidence
Adds beta and experimental Connector API actions
The connector API namespace now includes generated Ruby action classes for managing connectors and their sync jobs. New beta capabilities allow users to create, get, list, and delete connectors (including a \hard\ delete option and \delete\_sync\_jobs\ flag), as well as manage sync jobs via create, get, list, delete, and cancel operations. Additionally, experimental endpoints are added for connector and sync-job check-ins, claiming sync jobs, setting sync-job errors, and updating configuration, filtering, pipeline, and scheduling. These actions are marked as beta or experimental and are not yet ready for production usage.
elasticsearch-api/lib/elasticsearch/api/actions/connector · high confidence
Introduce YAML-based API test runner with internal operation support
The test runner now supports executing API specifications defined in YAML files, allowing tests to define sequences of actions (such as setting headers, sending requests, or expecting exceptions) and validations. It introduces support for internal Elasticsearch operations (like \\_internal/\_health\ and \\_internal/desired\_nodes\) that are not exposed via the standard client API, enabling deeper integration testing. The runner also handles variable caching and substitution, retries on network timeouts, and specific error handling for bulk and create operations.
_elasticsearch-api/api-spec-testing/test\file · high confidence
Introduces YAML-based REST API test runner with cluster cleanup and custom matchers
The \elasticsearch-api/api-spec-testing\ directory now contains the core components for a new YAML-based REST API test runner. This includes a \TestFile\ class to parse and execute YAML test definitions, custom RSpec matchers in \rspec\_matchers.rb\ for validating response fields (including support for \split\_key\ and boolean checks), and a \wipe\_cluster.rb\ module that ensures a clean state before tests by deleting indices, templates, snapshots, and (for the platinum suite) ML jobs, ILM policies, and trained models. A \custom\_cleanup.rb\ module adds specific cleanup for ML calendars, while \logging.rb\ provides structured output. The \README.md\ documents how to run these tests via Rake tasks against a Dockerized Elasticsearch instance.
elasticsearch-api/api-spec-testing · high confidence
New Buildkite CI pipeline for YAML and Serverless tests
The project now includes a complete Buildkite CI configuration to automate testing. The new pipeline (\.buildkite/pipeline.yml\) runs YAML integration tests across a matrix of Ruby versions (3.1, 3.3, 3.4, 4.0, and JRuby) and transport versions (8.5 and main). It supports two test suites: standard stack tests, which launch a local Elasticsearch cluster via \run-elasticsearch.sh\, and Serverless tests, which provision and use an Elastic Cloud instance via \create-serverless.sh\. Test results are collected and annotated in the Buildkite UI by \log-results.sh\.
.buildkite · high confidence
New Cross-Cluster Replication API methods
The client now exposes a complete set of actions for managing Cross-Cluster Replication (CCR) within the \Elasticsearch::API::CrossClusterReplication\ module. This includes methods to manage auto-follow patterns (\put\, \get\, \delete\, \pause\, \resume\), control follower indices (\follow\, \unfollow\, \pause\, \resume\), and retrieve operational data (\stats\, \follow\_stats\, \follow\_info\, \forget\_follower\). These additions enable programmatic configuration and monitoring of replication between clusters.
elasticsearch-api/lib/elasticsearch/api/actions/indices · high confidence
New Elasticsearch client helpers for Bulk, Scroll, and ES\|QL operations
The \elasticsearch/helpers\ directory now includes three new helper classes to simplify common Elasticsearch operations. \BulkHelper\ provides methods to index, update, and delete documents in bulk, including support for slicing large batches and ingesting data directly from JSON files. \ScrollHelper\ implements the Scroll API, allowing users to iterate over large result sets as an enumerable collection while automatically managing scroll IDs and clearing resources. \ESQLHelper\ offers a convenience method to query the ES\|QL API and automatically parse the columnar response into an array of hashes, with optional support for custom column parsers to transform data types.
elasticsearch/lib/elasticsearch/helpers · high confidence
New Ingest API actions for pipeline and database management
The Ruby client now exposes a complete set of Ingest API actions, allowing users to manage ingest pipelines and geolocation databases directly. This includes creating, updating, and deleting pipelines (\put\_pipeline\, \get\_pipeline\, \delete\_pipeline\), managing GeoIP and IP location database configurations (\put\_geoip\_database\, \get\_geoip\_database\, \delete\_geoip\_database\, \put\_ip\_location\_database\, \get\_ip\_location\_database\), and testing pipelines (\simulate\). Additional utility endpoints are available for retrieving GeoIP statistics (\geo\_ip\_stats\) and validating grok patterns (\processor\_grok\).
elasticsearch-api/lib/elasticsearch/api/actions/ingest · high confidence
New Rake task suite for automation, documentation, and local development
The \rake\_tasks\ directory now provides a comprehensive set of Rake tasks to streamline development workflows. The \automation\ namespace includes tasks to build gem releases (\automation:build\_gems\), generate API code from the client generator (\automation:codegen\), bump version numbers across the repository (\automation:bump\, \automation:autobump\), and update CI test matrix versions (\automation:bumpmatrix\). The \docs\ namespace introduces a new documentation generator (\docs:generate\) that creates executable Ruby code examples from parsed API reports, formats them with Rubocop, and evaluates them against a running cluster. For local development, the \es\ namespace offers Docker-based Elasticsearch management (\es:start\, \es:up\) and cluster health checks (\es:health\, \es:wait\_for\_green\). Finally, the \test\ namespace centralizes test execution for unit, integration, and YAML tests across all subprojects.
_rake\tasks · high confidence
New Search Application and Behavioral Analytics API actions
The Ruby client now includes generated API actions for the Search Application and Behavioral Analytics namespaces. Users can manage search applications via \put\, \get\, \list\, and \delete\ actions, and execute searches using the \search\ action (which supports a \typed\_keys\ parameter). Additionally, the \render\_query\ action allows previewing the generated Elasticsearch query for a search application. Behavioral analytics capabilities are also exposed, allowing users to create, get, and delete analytics collections via \put\_behavioral\_analytics\, \get\_behavioral\_analytics\, and \delete\_behavioral\_analytics\, as well as record events using \post\_behavioral\_analytics\_event\ (which includes a \debug\ parameter). Note that search application features are marked as beta, while behavioral analytics features are marked as experimental.
_elasticsearch-api/lib/elasticsearch/api/actions/search\application · high confidence
New Tasks API actions for listing, retrieving, and cancelling tasks
The Ruby client now includes generated action methods for the Elasticsearch Tasks API, allowing users to manage long-running operations. The \list\ action retrieves currently running tasks and supports grouping by node or parent task, filtering by action or node, and tracking via the \X-Opaque-Id\ header. The \get\ action fetches details for a specific task, including support for waiting for completion and following task relocations. The \cancel\ action allows users to request the termination of specific tasks or all tasks matching certain criteria. These actions are marked as beta/experimental features.
elasticsearch-api/lib/elasticsearch/api/actions/tasks · high confidence
New Text Structure API endpoints for analyzing and testing text formats
The Ruby client now exposes four new actions in the \text\_structure\ module: \find\_structure\ (analyzes raw text files to detect structure and suggest mappings), \find\_field\_structure\ (analyzes a specific field within existing index documents), \find\_message\_structure\ (analyzes pre-split messages), and \test\_grok\_pattern\ (validates Grok patterns against text). These endpoints allow users to programmatically inspect text data, extract structural insights, and validate parsing patterns before ingestion. All actions support common parameters such as \ecs\_compatibility\, \explain\, and \timeout\, and the \find\_structure\ and \find\_message\_structure\ actions accept a \should\_parse\_recursively\ option for NDJSON formats.
_elasticsearch-api/lib/elasticsearch/api/actions/text\structure · high confidence
New and updated Inference API client methods
The Ruby client now includes generated action methods for the Inference API, enabling users to create, retrieve, and delete inference endpoints and run inference tasks. New methods include \chat\_completion\_unified\ and \completion\ for specific task types, alongside the general \inference\, \embedding\, \put\, \get\, and \delete\ actions. The \delete\ action now supports \dry\run\ and \force\ parameters to manage endpoint removal safely. Additionally, dedicated \put\\ methods are available for specific providers such as AI21, AlibabaCloud, Amazon Bedrock, Amazon SageMaker, and Anthropic, allowing users to configure endpoints for these services directly.
elasticsearch-api/lib/elasticsearch/api/actions/inference · high confidence
New cluster API actions for component templates, voting config, and cluster info
The Ruby client now exposes several new cluster-level API actions in the \elasticsearch/api/actions/cluster\ namespace. Users can manage component templates with \put\_component\_template\, \get\_component\_template\, \delete\_component\_template\, and \exists\_component\_template\. Cluster voting configuration exclusions can be updated via \post\_voting\_config\_exclusions\ and cleared with \delete\_voting\_config\_exclusions\. Additionally, the \cluster.info\ action allows retrieving basic cluster information by specifying a target (e.g., \http\, \ingest\), and \cluster.pending\_tasks\ provides details on cluster-level changes that have not yet taken effect.
elasticsearch-api/lib/elasticsearch/api/actions/cluster · high confidence
New elastic\_ruby\_console development tool
A new executable script, elastic\_ruby\_console, has been added to the elasticsearch/bin directory to facilitate interactive development and usage of the Elasticsearch Ruby gem. This tool automatically configures the load path to include the core elasticsearch and elasticsearch-api libraries, along with the bulk helper, and launches an interactive Ruby session using either Pry (with a custom 'elastic\_ruby' prompt) or IRB, depending on which is available.
elasticsearch/bin · high confidence
New features API endpoints for managing snapshot feature states
The client library now includes two new API actions: \get\_features\ and \reset\_features\. The \get\_features\ endpoint allows users to retrieve a list of feature states (including built-in and plugin-defined features) that can be included in snapshots, helping determine which system indices are required for data integrity. The \reset\_features\ endpoint clears all state information stored in system indices (such as security and machine learning indices), effectively returning the cluster to a fresh installation state; this is marked as experimental and intended for development and testing use only, not for production clusters.
elasticsearch-api/lib/elasticsearch/api/actions/features · high confidence
New migration API actions for deprecations and feature upgrades
The Elasticsearch Ruby client now includes three new API actions in the \migration\ module: \deprecations\, \get\_feature\_upgrade\_status\, and \post\_feature\_upgrade\. The \deprecations\ action allows users to retrieve information about deprecated cluster, node, and index settings that will be removed or changed in the next major version. The \get\_feature\_upgrade\_status\ and \post\_feature\_upgrade\ actions enable users to check the status of feature migrations and initiate the automatic migration process for system indices, respectively. These actions are designed to support the Upgrade Assistant and help users prepare for major version upgrades.
elasticsearch-api/lib/elasticsearch/api/actions/migration · high confidence
Snapshot Lifecycle Management API endpoints added
The Ruby client now includes generated action methods for the Elasticsearch Snapshot Lifecycle Management (SLM) API, enabling users to manage snapshot policies directly from code. This update adds support for creating or updating policies (\put\_lifecycle\), retrieving policy definitions and statistics (\get\_lifecycle\, \get\_stats\), executing policies and retention rules manually (\execute\_lifecycle\, \execute\_retention\), and controlling the SLM service state (\start\, \stop\, \get\_status\). All endpoints support standard timeout and master node connection parameters.
_elasticsearch-api/lib/elasticsearch/api/actions/snapshot\_lifecycle\management · high confidence
Snapshot and Restore API client actions added
The Ruby client now includes generated action methods for the full Snapshot and Restore API, allowing users to manage snapshot repositories and snapshots directly from code. New capabilities include creating and deleting repositories (\create\_repository\, \delete\_repository\), creating, deleting, and retrieving snapshots (\create\, \delete\, \get\), cloning snapshots (\clone\), cleaning up stale repository data (\cleanup\_repository\), and analyzing repository integrity (\repository\_analyze\). The \get\ action supports pagination via \after\ and \offset\, filtering by SLM policies, and detailed index information, while \delete\ and \get\ support the \ignore\ option to suppress 404 errors for missing resources.
elasticsearch-api/lib/elasticsearch/api/actions/snapshot · high confidence
Removals
Removal of initial Elasticsearch gem skeleton
The initial placeholder structure for the Elasticsearch Ruby gem has been removed, specifically deleting the main \lib/elasticsearch.rb\ entry point and the \lib/elasticsearch/version.rb\ file that previously defined the gem's version as 0.0.1. This cleanup eliminates the blank module and version constant generated by Bundler, indicating the project is moving past its initial scaffolding phase.
lib, lib/elasticsearch · high confidence
Behavioural changes
API client now returns structured Response objects instead of raw bodies
The Elasticsearch API client has been updated to wrap transport responses in a dedicated \Elasticsearch::API::Response\ object. Instead of receiving the raw response body directly, users now get an object that behaves like a Hash for body access but also exposes \status\ and \headers\ methods. This change is accompanied by a refactor of internal utility methods (such as \escape\, \listify\, \pathify\, and \bulkify\) in the \Utils\ module to support this new structure and improve URL encoding and bulk payload handling. The \elasticsearch-api\ gem version has been bumped to 9.5.0.
elasticsearch-api/lib/elasticsearch/api · high confidence
Add missing .rb extension to the elasticsearch-api.rb file
The main entry point file \elasticsearch-api/lib/elasticsearch-api.rb\ was renamed to include the \.rb\ extension. This ensures the file is correctly recognized as a Ruby source file, allowing it to be properly required by other parts of the application.
elasticsearch-api/lib · high confidence
Elasticsearch Ruby client introduces product validation and updated HTTP headers
The \elasticsearch\ gem now validates that the connected server is actually Elasticsearch by checking the \x-elastic-product\ header on the first request, issuing warnings if verification fails due to security privileges or other errors. It also updates the default \Content-Type\ header to \application/vnd.elasticsearch+json; compatible-with=9\ and refactors how API keys and Cloud IDs are handled during client initialization, including support for passing API keys as a hash.
elasticsearch/lib · high confidence
Elasticsearch Ruby client version updated to 9.5.0
The elasticsearch gem's version constant has been updated to 9.5.0. This change reflects the current release version of the client library, ensuring that applications relying on the version constant for compatibility checks or logging will report the correct version number.
elasticsearch/lib/elasticsearch · high confidence
Enrich API actions now support the master\_timeout parameter
The generated Ruby client code for the Enrich API actions (delete\_policy, execute\_policy, get\_policy, put\_policy, and stats) has been updated to include the \master\_timeout\ parameter. This allows users to specify the period to wait for a connection to the master node when managing enrich policies, with a server default of 30 seconds. The code also reflects other specification updates, such as the use of a new Response object and adjusted argument ordering.
elasticsearch-api/lib/elasticsearch/api/actions/enrich · high confidence
Index Lifecycle Management API actions regenerated for 9.x
The Index Lifecycle Management (ILM) API action files in the Ruby client have been regenerated to align with the Elasticsearch 9.x specification. This update introduces the new \migrate\_to\_data\_tiers\ action, which allows users to automate the migration from custom node attributes to data tiers. Several existing actions, including \put\_lifecycle\, \move\_to\_step\, and \delete\_lifecycle\, now enforce required request bodies where they were previously optional or missing. Additionally, the generated code has been updated to use a new \Response\ object and includes stricter parameter validation, ensuring that required arguments like \policy\ and \index\ are present before making requests.
_elasticsearch-api/lib/elasticsearch/api/actions/index\_lifecycle\management · high confidence
Introduction of the new elasticsearch-api gem structure
The \elasticsearch-api\ library has been restructured into a new gem skeleton, introducing a modular architecture where API endpoints are organized under \lib/elasticsearch/api/actions\. This change includes the addition of the \Encryption\ namespace with the \reset\ endpoint for managing project encryption keys, alongside a comprehensive set of other namespaces such as \Inference\, \Streams\, \ES\|QL\, and \Query Rules\. The main \Elasticsearch::API\ module now dynamically loads these namespaces, provides a configurable JSON serializer (defaulting to \multi\_json\), and returns structured \Elasticsearch::API::Response\ objects instead of raw bodies, standardizing the client's interaction model.
elasticsearch-api/lib/elasticsearch · high confidence
Query Rules API actions reorganized and expanded
The query rules API actions have been reorganized into the \query\_rules\ namespace, replacing the previous \query\_rule\ and \query\_ruleset\ structure. This update introduces a new \test\ action that allows users to evaluate match criteria against a ruleset, and adds an \ignore 404\ parameter to the \delete\_ruleset\ action to handle missing resources gracefully. All existing actions (create, read, update, delete) for rules and rulesets are now consolidated under this unified interface.
_elasticsearch-api/lib/elasticsearch/api/actions/query\rules · high confidence
Refactored Buildkite CI functions into shared, modular scripts
The Buildkite CI pipeline now uses a new set of shared Bash functions located in .buildkite/functions to manage Docker container lifecycles. This change introduces dedicated scripts for cleanup (cleanup.sh), environment setup and imports (imports.sh), and container health waiting (wait-for-container.sh). For users, this means the CI environment initialization is more robust, with explicit validation of the STACK\_VERSION, standardized network and volume cleanup via trap handlers, and improved logging during container startup to reduce noise while ensuring health checks are respected before proceeding.
.buildkite/functions · high confidence
Regenerated Cat API action files for Elasticsearch 9.x
The Ruby client's Cat API action files (e.g., aliases, allocation, circuit\_breaker, count, fielddata, health, help, indices, master) have been regenerated to align with the Elasticsearch 9.x specification. This update introduces behavioral changes such as switching the cat.count endpoint to use the POST method (supporting request bodies for project routing in serverless environments) and adding new parameters like \:index\ to cat.segments and \:full\_id\ to cat.nodes. The generated code now consistently wraps responses in the \Elasticsearch::API::Response\ object, updates documentation links to elastic.co, and refines parameter handling for common options like \:h\, \:s\, \:bytes\, and \:time\.
elasticsearch-api/lib/elasticsearch/api/actions/cat · high confidence
Regenerated Elasticsearch API action methods for 9.x
The Ruby client's API action files (such as \bulk.rb\, \create.rb\, \delete.rb\, and \delete\_by\_query.rb\) have been regenerated to align with the Elasticsearch 9.x specification. This update introduces new parameters like \require\_alias\ and \require\_data\_stream\, enforces stricter validation for required arguments (e.g., \id\ and \index\ for the \create\ action), and updates HTTP method usage and path construction to match the latest server behavior.
elasticsearch-api/lib/elasticsearch/api/actions · high confidence
Repository restructured with new documentation, licensing, and build configuration
The repository has been reorganized to improve developer experience and compliance. The root-level Rakefile has been significantly expanded to manage subprojects (elasticsearch, elasticsearch-api) with dedicated tasks for bundling, testing, documentation, and release, replacing the previous minimal setup. A new AGENTS.md file provides specific instructions for AI agents and contributors on how to run tests and build the project. Documentation has been overhauled: the README now links to official Elastic documentation and includes usage examples, while CONTRIBUTING.md and CODE\_OF\_CONDUCT.md have been added. Licensing has been updated from MIT to Apache 2.0, with the old LICENSE.txt removed and new LICENSE and NOTICE files added. Additionally, a .dockerignore file has been introduced to exclude build artifacts from Docker contexts, and the .gitignore has been updated to track more development artifacts.
(repo-wide) · high confidence
SQL API actions updated to 9.x specification with async support
The SQL API action files in the Ruby client have been regenerated to align with the Elasticsearch 9.x specification. This update introduces new methods for managing asynchronous SQL searches, including \get\_async\, \get\_async\_status\, \delete\_async\, and \clear\_cursor\, allowing users to run long-running queries and manage their lifecycle. Existing synchronous actions like \query\ and \translate\ have also been updated to reflect the latest API contract, ensuring compatibility with the current Elasticsearch server version.
elasticsearch-api/lib/elasticsearch/api/actions/sql · high confidence
Security API client updated to 9.x specification
The security action files in the Ruby API client have been regenerated to align with the Elasticsearch 9.x specification. This update introduces new endpoints for managing user profiles (activate, disable, search, suggest), bulk role operations (bulk\_delete\_role, bulk\_put\_role), and cross-cluster API keys (create, update). It also adds support for cloning API keys, bulk updating API keys, and clearing various caches (API key, privileges, realms, roles, service tokens). Existing endpoints such as authenticate, change\_password, and create\_api\_key have been updated to reflect the new specification structure.
elasticsearch-api/lib/elasticsearch/api/actions/security · high confidence
Synonyms API endpoints migrated to the synonyms namespace with new parameters
The synonyms API actions have been regenerated to align with the 9.x specification, moving the \synonyms\_sets\ and \synonym\_rule\ endpoints into the unified \synonyms\ namespace. This update introduces a \:refresh\ boolean parameter to \delete\_synonym\_rule\, \put\_synonym\, and \put\_synonym\_rule\, allowing users to control whether analyzers are reloaded immediately after changes. Additionally, \put\_synonym\ now supports an \:append\ parameter to enable adding synonym rules to existing sets without replacing them entirely.
elasticsearch-api/lib/elasticsearch/api/actions/synonyms · high confidence
Updated License API client methods for Elasticsearch 9.x
The license action methods in the Ruby client have been regenerated to align with the Elasticsearch 9.x specification. This update introduces new parameters such as \:timeout\ and \:master\_timeout\ to the \delete\ and \post\ actions, and adds a \:type\ parameter to the \post\_start\_trial\ action. Additionally, the \get\ action now documents a default value change for the \:local\ parameter in version 9.2 onwards. All license-related endpoints now utilize the new \Elasticsearch::API::Response\ object and pass an additional \request\_opts\ argument to \perform\_request\.
elasticsearch-api/lib/elasticsearch/api/actions/license · high confidence
Updated Nodes API actions with new parameters and endpoints
The Nodes API actions have been regenerated to align with the latest Elasticsearch specification. This update adds support for the \:timeout\ parameter in the Hot Threads, Info, and Stats actions, and introduces the \:metric\ parameter to the Info action. Additionally, the Stats action now supports the \:include\_segment\_file\_sizes\ parameter to report aggregated disk usage of Lucene index files. New endpoints have been added for managing repositories metering, including \clear\_repositories\_metering\_archive\ and \get\_repositories\_metering\_info\, while the \reload\_secure\_settings\ action now accepts a request body for keystore passwords.
elasticsearch-api/lib/elasticsearch/api/actions/nodes · high confidence
Updated Ruby Machine Learning API client to 9.x specification
The Ruby client's machine learning actions have been regenerated to align with the Elasticsearch 9.x specification. This update introduces new endpoints such as \clear\_trained\_model\_deployment\_cache\ and \delete\_expired\_data\, while also refining existing methods like \close\_job\ and \delete\_job\ with updated parameters and request body support. Users benefit from improved API coverage for trained model management, job lifecycle operations, and calendar event handling, ensuring compatibility with the latest Elasticsearch server capabilities.
_elasticsearch-api/lib/elasticsearch/api/actions/machine\learning · high confidence
Updated Transform API actions for Elasticsearch 9.x
The Transform API actions in the Elasticsearch Ruby client have been regenerated to align with the 9.x specification. This update introduces new methods including \get\_node\_stats\ for per-node usage information, \reset\_transform\ to clear transform state, \set\_upgrade\_mode\ to manage cluster-wide upgrade readiness, and \schedule\_now\_transform\ to trigger immediate processing. Existing actions such as \delete\_transform\ now support a \delete\_dest\_index\ parameter to optionally remove the destination index, and \preview\_transform\ has been updated to accept a request body for configuration. All actions now utilize the new \Elasticsearch::API::Response\ object and adhere to the latest argument ordering and validation rules.
elasticsearch-api/lib/elasticsearch/api/actions/transform · high confidence
Watcher API actions regenerated for 9.x specification
The Watcher namespace API actions (such as ack\_watch, activate\_watch, delete\_watch, execute\_watch, get\_settings, get\_watch, put\_watch, query\_watches, start, stats, stop, and update\_settings) have been regenerated to align with the Elasticsearch 9.x specification. This update introduces new API endpoints for managing Watcher settings (get\_settings, update\_settings) and querying watches, while also updating existing endpoints like put\_watch to require a request body. The generated code now utilizes a new Response object and includes a fix to properly handle 404 errors during watch deletion via the ignore parameter.
_elasticsearch-api/lib/elasticsearch/api/actions/async\search, elasticsearch-api/lib/elasticsearch/api/actions/watcher · high confidence
XPack API endpoints moved to elasticsearch-api with updated response handling
The XPack namespace has been renamed from \xpack\ to \XPack\ and the corresponding API action files (such as \info\ and \usage\) have been moved into the \elasticsearch-api\ library. These generated endpoints now utilize a new \Response\ object wrapper and pass an additional \perform\_request\ argument, aligning the client's API structure with the 9.x specification updates.
elasticsearch-api/lib/elasticsearch/api/actions/xpack · high confidence
Test coverage
Added RSpec test infrastructure and custom formatter for API specs; Added YAML test runner for Elasticsearch API specifications; Added integration tests for API keys and cluster health; Added integration tests for Elasticsearch client helpers; Added integration tests for client operations and OpenTelemetry instrumentation; Added spec\_helper for Elasticsearch integration tests; Added unit tests for Elasticsearch API client components; Added unit tests for NDJSON endpoint headers; Added unit tests for client initialization and configuration; Adds REST API specification tests for the Ruby client.
Dependencies
Restructures Ruby gem dependencies and adds integration examples
The project has reorganized its Ruby gem structure by splitting the main \elasticsearch\ gem into separate \elasticsearch-api\ and \elasticsearch\ components, each with its own \Gemfile\ and \.gemspec\. The root \Gemfile\ now explicitly references these local paths and updates development dependencies, including adding \rubocop\ and \rspec\. Additionally, new example applications for APM and RabbitMQ integration have been added, and the legacy root \elasticsearch.gemspec\ has been removed.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 59.
Lenses
- Code Health 99
- Architecture 66
- Maturity 54
- Readiness 60
- Security 61
- Accessibility 64
Changes since last survey
- 300 commits — 285 feature/other, 15 fixes
By area
- elasticsearch-api/lib — 132 commits
- elasticsearch-api/spec — 32 commits
- (root) — 27 commits
- .github/workflows — 21 commits
- .buildkite/pipeline.yml — 16 commits
- rake_tasks/automation.rake — 16 commits
- docs/reference — 12 commits
- docs/release-notes — 12 commits
- elasticsearch-api/Rakefile — 5 commits
- elasticsearch/spec — 5 commits
- elasticsearch/lib — 4 commits
- elasticsearch-api/elasticsearch-api.gemspec — 3 commits
- scripts/benchmark-vectors — 3 commits
- docs/docset.yml — 2 commits
- elasticsearch-api/utils — 2 commits
- elasticsearch/elasticsearch.gemspec — 2 commits
- .github/make.sh — 1 commit
- docs/release_notes — 1 commit
- elasticsearch-api/.gitignore — 1 commit
- elasticsearch-api/README.md — 1 commit
Notable commits
- fix: Fix mapped_pages front matter on docs/reference/index (#2609)
- fix: Fixes NoMethodError when Content-Type lacks compatible-with parameter
- fix: Revert "[CI] Test JRuby 10.0"
- fix: Revert "[Tests] Skips jbuilder for specific version of JRuby"
- fix: [Automation] Fixes bumpmatrix
- fix: [CI] Fix log results in pipeline.yml
- fix: [DOCS] Fixes link in ECS documentation
- fix: [Gem] Fixes Bulk Helper update with slice
- fix: [Gem] Fixes header conflict on Serverless
- fix: fix external links (#2595)
- fix: fix image paths for docs-assembler (#2654)
- fix: fix(automation): isolate codegen bundle environment (#3012)
- fix: fix(automation): pass token to code generator (#3014)
- fix: fix(automation): remove sudo and clean generator checkout (#3011)
- fix: fix(automation): use current codegen rake task (#3013)
- change: Add Vale docs linting support (#2894)
- change: Addresses warnings
- change: Adds 'ostruct' as a development dependency
- change: Adds .env to gitignore
- change: Adds Rakefile for base 64 benchmark script
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
elastic/elasticsearch-ruby was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a6226129d0ff448c2ea7f0094e69d278b65f2323 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.