{"id":13462946,"url":"https://github.com/elastic/elasticsearch-ruby","last_synced_at":"2026-06-02T16:31:11.098Z","repository":{"id":8291582,"uuid":"9831101","full_name":"elastic/elasticsearch-ruby","owner":"elastic","description":"Ruby integrations for Elasticsearch","archived":false,"fork":false,"pushed_at":"2026-05-28T15:25:21.000Z","size":19449,"stargazers_count":1979,"open_issues_count":12,"forks_count":617,"subscribers_count":337,"default_branch":"main","last_synced_at":"2026-05-30T03:06:07.471Z","etag":null,"topics":["client","elastic","elasticsearch","ruby","rubynlp","search"],"latest_commit_sha":null,"homepage":"https://www.elastic.co/docs/reference/elasticsearch/clients/ruby","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elastic.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-05-03T07:39:25.000Z","updated_at":"2026-05-26T08:19:14.000Z","dependencies_parsed_at":"2025-12-15T03:07:59.415Z","dependency_job_id":"2eb7a52b-a511-4a7a-ac86-7f184959a302","html_url":"https://github.com/elastic/elasticsearch-ruby","commit_stats":{"total_commits":3173,"total_committers":167,"mean_commits":19.0,"dds":0.5357705641348881,"last_synced_commit":"66ecf845899dca077721b769216404b1f85bbe8e"},"previous_names":["elasticsearch/elasticsearch-ruby"],"tags_count":238,"template":false,"template_full_name":null,"purl":"pkg:github/elastic/elasticsearch-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Felasticsearch-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Felasticsearch-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Felasticsearch-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Felasticsearch-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elastic","download_url":"https://codeload.github.com/elastic/elasticsearch-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Felasticsearch-ruby/sbom","scorecard":{"id":371220,"data":{"date":"2025-08-11","repo":{"name":"github.com/elastic/elasticsearch-ruby","commit":"dabc3b1152d3a5db131a5bcb26ed57cfa8272e8d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.6,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 3/18 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'deployments' permission set to 'write': .github/workflows/docs-build.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docs-build.yml:18","Info: found token with 'none' permissions: .github/workflows/docs-cleanup.yml:12","Warn: jobLevel 'deployments' permission set to 'write': .github/workflows/docs-cleanup.yml:14","Warn: no topLevel permission defined: .github/workflows/docs-build.yml:1","Warn: no topLevel permission defined: .github/workflows/docs-cleanup.yml:1","Warn: no topLevel permission defined: .github/workflows/license.yml:1","Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/otel.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/elastic/.github/SECURITY.md:1","Info: Found linked content: github.com/elastic/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/elastic/.github/SECURITY.md:1","Info: Found text in security policy: github.com/elastic/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Warn: 'stale review dismissal' is disabled on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Warn: codeowners review is not required on branch 'main'","Warn: 'last push approval' is disabled on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-build.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/docs-build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-cleanup.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/docs-cleanup.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/license.yml:7: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/license.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/license.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/license.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/otel.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/otel.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/otel.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/otel.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/otel.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/elastic/elasticsearch-ruby/otel.yml/main?enable=pin","Warn: containerImage not pinned by hash: .buildkite/Dockerfile:3","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T13:00:40.300Z","repository_id":8291582,"created_at":"2025-08-18T13:00:40.301Z","updated_at":"2025-08-18T13:00:40.301Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33682998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","elastic","elasticsearch","ruby","rubynlp","search"],"created_at":"2024-07-31T13:00:41.701Z","updated_at":"2026-06-02T16:31:11.093Z","avatar_url":"https://github.com/elastic.png","language":"Ruby","funding_links":[],"categories":["Active Record Plugins","Ruby","Elasticsearch developer tools and utilities","Search","Clients \u0026 SDKs"],"sub_categories":["Rails Search","Clients"],"readme":"# Elasticsearch\n[![8.19](https://github.com/elastic/elasticsearch-ruby/actions/workflows/8.19.yml/badge.svg)](https://github.com/elastic/elasticsearch-ruby/actions/workflows/8.19.yml) [![9.3](https://github.com/elastic/elasticsearch-ruby/actions/workflows/9.3.yml/badge.svg)](https://github.com/elastic/elasticsearch-ruby/actions/workflows/9.3.yml)  [![9.4](https://github.com/elastic/elasticsearch-ruby/actions/workflows/9.4.yml/badge.svg?branch=9.4)](https://github.com/elastic/elasticsearch-ruby/actions/workflows/9.4.yml) [![main](https://github.com/elastic/elasticsearch-ruby/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/elastic/elasticsearch-ruby/actions/workflows/main.yml) [![Build status](https://badge.buildkite.com/e50e66eb71bf6566a6479c8a29b25458f6781ee8e52cee8d96.svg)](https://buildkite.com/elastic/elasticsearch-ruby)\n\n**[Download the latest version of Elasticsearch](https://www.elastic.co/downloads/elasticsearch)**\nor\n**[sign-up](https://cloud.elastic.co/registration?elektra=en-ess-sign-up-page)**\n**for a free trial of Elastic Cloud**.\n\nThis repository contains the official [Elasticsearch](https://www.elastic.co/products/elasticsearch) Ruby client. The [`elasticsearch`](https://github.com/elasticsearch/elasticsearch-ruby/tree/main/elasticsearch) gem is a complete Elasticsearch client which uses two separate libraries:\n\n* [`elastic-transport`](https://github.com/elastic/elastic-transport-ruby) - provides the low-level code for connecting to an Elasticsearch cluster.\n* [`elasticsearch-api`](https://github.com/elasticsearch/elasticsearch-ruby/tree/main/elasticsearch-api) - provides a Ruby API for the Elasticsearch RESTful API.\n\n## Documentation\n\nPlease refer to \n[the full documentation on elastic.co](https://www.elastic.co/docs/reference/elasticsearch/clients/ruby) \nfor comprehensive information.\n\nBoth `elastic-transport` and `elasticsearch-api` are documented. You can check \nthe [`elastic-transport`](https://rubydoc.info/github/elastic/elastic-transport-ruby/) \nand the [`elasticsearch-api`](http://rubydoc.info/gems/elasticsearch-api) \ndocumentation at RubyDocs.\n\n## Installation\n\n```ruby\ngem install elasticsearch\n```\n\nRefer to the [Installation section](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_installation)\nof the getting started documentation.\n\n## Connecting\n\nRefer to the [Connecting section](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_connecting)\nof the getting started documentation.\n\n## Usage\n\n```ruby\nrequire 'elasticsearch'\nclient = Elasticsearch::Client.new(host: 'https://my-elasticsearch-host.example')\nclient.ping\nclient.search(q: 'test')\n```\n\n* [Creating an index](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_creating_an_index)\n* [Indexing a document](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_indexing_documents)\n* [Getting documents](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_getting_documents)\n* [Searching documents](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_searching_documents)\n* [Updating documents](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_updating_documents)\n* [Deleting documents](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_deleting_documents)\n* [Deleting an index](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/getting-started-ruby.html#_deleting_an_index)\n\nRefer to [the official documentation](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/examples.html)\nfor examples of how to use the most frequently called APIs and \n[`doc/examples`](https://github.com/elastic/elasticsearch-ruby/blob/main/docs/examples/) \nfor some practical examples.\n\n**For optimal performance, you should use a HTTP library which supports persistent (\"keep-alive\") connections, e.g. [Patron](https://github.com/toland/patron) or [Typhoeus](https://github.com/typhoeus/typhoeus).** These libraries are not dependencies of the Elasticsearch gems. Ensure you define a dependency for a HTTP library in your own application.\n\nCheck out these other official Ruby libraries for working with Elasticsearch:\n\n* [`elasticsearch-rails`](https://github.com/elasticsearch/elasticsearch-rails) - integration with Ruby models and Rails applications.\n* [`elasticsearch-extensions`](https://github.com/elastic/elasticsearch-ruby/tree/7.17/elasticsearch-extensions), *deprecated*.\n* [`elasticsearch-dsl`](https://github.com/elastic/elasticsearch-dsl-ruby) which provides a Ruby API for the [Elasticsearch Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html).\n\nPlease see their respective READMEs for information and documentation.\n\n## Compatibility\n\nWe follow Ruby’s own maintenance policy and officially support all currently maintained versions per [Ruby Maintenance Branches](https://www.ruby-lang.org/en/downloads/branches/).\n\nLanguage clients are forward compatible; meaning that clients support communicating with greater or equal minor versions of Elasticsearch without breaking.\nIt does not mean that the client automatically supports new features of newer Elasticsearch versions; it is only possible after a release of a new client version.\nFor example, a 8.12 client version won't automatically support the new features of the 8.13 version of Elasticsearch, the 8.13 client version is required for that.\nElasticsearch language clients are only backwards compatible with default distributions and without guarantees made.\n\n| Gem Version |   | Elasticsearch  Version | Supported |\n|-------------|---|------------------------|-----------|\n| 8.x         | → | 8.x                    | 8.x       |\n| 9.x         | → | 9.x                    | 9.x       |\n| main        | → | main                   |           |\n\n## Try Elasticsearch and Kibana locally\n\nIf you want to try Elasticsearch and Kibana locally, you can run the following command:\n\n```bash\ncurl -fsSL https://elastic.co/start-local | sh\n```\n\nThis will run Elasticsearch at http://localhost:9200 and Kibana at http://localhost:5601 using Docker.\n\nMore information is available [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/run-elasticsearch-locally.html).\n\n## Development\n\nSee [CONTRIBUTING](https://github.com/elastic/elasticsearch-ruby/blob/main/CONTRIBUTING.md).\n\n## License\n\nThis software is licensed under the [Apache 2 license](./LICENSE). See [NOTICE](./NOTICE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Felasticsearch-ruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felastic%2Felasticsearch-ruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Felasticsearch-ruby/lists"}