{"id":22423065,"url":"https://github.com/arakelian/elastic-indexer","last_synced_at":"2026-03-03T20:07:26.295Z","repository":{"id":57717439,"uuid":"113128214","full_name":"arakelian/elastic-indexer","owner":"arakelian","description":"High speed asynchronous indexing of documents into Elastic 5+","archived":false,"fork":false,"pushed_at":"2025-02-23T00:04:17.000Z","size":2063,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T14:46:24.181Z","etag":null,"topics":["api-client","elastic","elasticsearch","elasticsearch-client","indexing","indexing-engine","java","java-8"],"latest_commit_sha":null,"homepage":"","language":"Java","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/arakelian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2017-12-05T03:37:49.000Z","updated_at":"2025-02-23T00:04:21.000Z","dependencies_parsed_at":"2025-02-23T01:18:38.837Z","dependency_job_id":"43dc5889-da34-4000-83c2-a3261490458c","html_url":"https://github.com/arakelian/elastic-indexer","commit_stats":null,"previous_names":[],"tags_count":95,"template":false,"template_full_name":null,"purl":"pkg:github/arakelian/elastic-indexer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arakelian%2Felastic-indexer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arakelian%2Felastic-indexer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arakelian%2Felastic-indexer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arakelian%2Felastic-indexer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arakelian","download_url":"https://codeload.github.com/arakelian/elastic-indexer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arakelian%2Felastic-indexer/sbom","scorecard":{"id":204961,"data":{"date":"2025-08-11","repo":{"name":"github.com/arakelian/elastic-indexer","commit":"09ca39a0dc98c3b45d6ffad2aa7494576d93aeb9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"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: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/arakelian/elastic-indexer/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/arakelian/elastic-indexer/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/arakelian/elastic-indexer/ci.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction 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":"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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"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":"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for 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"}}]},"last_synced_at":"2025-08-16T23:31:55.282Z","repository_id":57717439,"created_at":"2025-08-16T23:31:55.282Z","updated_at":"2025-08-16T23:31:55.282Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30057839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api-client","elastic","elasticsearch","elasticsearch-client","indexing","indexing-engine","java","java-8"],"created_at":"2024-12-05T18:09:08.542Z","updated_at":"2026-03-03T20:07:23.417Z","avatar_url":"https://github.com/arakelian.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# elastic-indexer\n[![version](https://img.shields.io/maven-metadata/v.svg?label=release\u0026metadataUrl=https://repo1.maven.org/maven2/com/arakelian/elastic-indexer/maven-metadata.xml)](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.arakelian%22%20AND%20a%3A%22elastic-indexer%22)\n[![CI](https://github.com/arakelian/elastic-indexer/actions/workflows/ci.yml/badge.svg)](https://github.com/arakelian/elastic-indexer/actions/workflows/ci.yml)\n\n**elastic-indexer** is a high-level Java API for indexing data into [Elastic](https://www.elastic.co/products/elasticsearch).\nIt is compatabile with all versions of Elasticsearch starting with version 5.2. This library is currently being used in a \nproduction environment where hundreds of billions of records are re-indexed several times each year into an Elastic cluster\nwith hundreds of nodes. In other words, this library is battle tested at scale.\n\nWhen considering a library like **elastic-indexer**, the first question you may ask is why wouldn't you want to use the offical \n[Low Level REST Client](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low.html), or \nbetter yet the new [High Level Rest Client](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html).\n\nWith regards to the former, the answer is easy: Indexing data at scale involves many tasks that the low-level API simply does not provide\nsupport for. This includes:\n* Building Elastic documents for indexing that are sourced from large, hierarchical JSON structure which must be transformed, massaged\n  or redacted in some way;\n* Handling the inevitable 'Server too busy' conditions that occur environments with hundreds of nodes, and retrying index operations \n  with backoff so that clusters can recover; \n* Sending data to Elastic in an asynchronous manner so that your application can continue processing, while allowing callers to \n  register callbacks so that if indexing fails (despite retries), the application can schedule a retry at a future date.\n\nWith regards to the latter option, there are at least two things you should consider:\n* As of this writing (late February, 2018) the High Level Client remains in beta;\n* The High Level API only supports Elastic 6.1+ and does not strive to maintain backwards compatibility with previous versions of Elastic.\n\n\u003e from Elastic High-Level Client: \"The 6.0 client is able to communicate with any 6.x Elasticsearch node, while the 6.1 client is \n\u003e for sure able to communicate with 6.1, 6.2 and any later 6.x version, but *there may be incompatibility issues( when communicating \n\u003e with a previous Elasticsearch node version, for instance between 6.1 and 6.0, in case the 6.1 client supports \n\u003e new request body fields for some APIs that are not known by the 6.0 node(s).\" \n\n**elastic-indexer** is compatible with every version of Elastic from version 5.2. As new features are added to our bulk indexer,\nor search APIs, we strive to maintain backwards compatiblity with old versions of Elastic, since we recognize that enterprise\ndeployments of Elastic (like the ones this library operates in) often operate on much longer upgrade cycles than smaller installations\nof Elastic.\n\n## Requirements\n\n* Versions \u003c 8.0.0 require Java 8+\n* Version 8+ require Java 11+\n\n## Installation\n\nThe library is available on [Maven Central](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.arakelian%22%20AND%20a%3A%22elastic-indexer%22).\n\n### Maven\n\nAdd the following to your `pom.xml`:\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ecentral\u003c/id\u003e\n        \u003cname\u003eCentral Repository\u003c/name\u003e\n        \u003curl\u003ehttp://repo.maven.apache.org/maven2\u003c/url\u003e\n        \u003creleases\u003e\n            \u003cenabled\u003etrue\u003c/enabled\u003e\n        \u003c/releases\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n...\n\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.arakelian\u003c/groupId\u003e\n    \u003cartifactId\u003eelastic-indexer\u003c/artifactId\u003e\n    \u003cversion\u003e8.6.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\n### Gradle\n\nAdd the following to your `build.gradle`:\n\n```groovy\nrepositories {\n  mavenCentral()\n}\n\ndependencies {\n  testCompile 'com.arakelian:elastic-indexer:8.6.0'\n}\n```\n\n## Licence\n\nApache Version 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farakelian%2Felastic-indexer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farakelian%2Felastic-indexer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farakelian%2Felastic-indexer/lists"}