{"id":15138533,"url":"https://github.com/codingchili/excelastic","last_synced_at":"2025-09-18T23:23:54.123Z","repository":{"id":45844900,"uuid":"60345192","full_name":"codingchili/excelastic","owner":"codingchili","description":"Vert.x web and commandline application to import CSV/XLS/XLSX files into ElasticSearch.","archived":false,"fork":false,"pushed_at":"2020-12-20T15:09:48.000Z","size":17495,"stargazers_count":118,"open_issues_count":3,"forks_count":51,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-08-24T22:06:06.565Z","etag":null,"topics":["elasticsearch","importer","kibana","parses-xlsx-files","vertx"],"latest_commit_sha":null,"homepage":"https://excelastic.com/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codingchili.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-03T12:14:18.000Z","updated_at":"2025-08-08T18:04:56.000Z","dependencies_parsed_at":"2022-08-06T01:15:33.900Z","dependency_job_id":null,"html_url":"https://github.com/codingchili/excelastic","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/codingchili/excelastic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingchili%2Fexcelastic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingchili%2Fexcelastic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingchili%2Fexcelastic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingchili%2Fexcelastic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codingchili","download_url":"https://codeload.github.com/codingchili/excelastic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingchili%2Fexcelastic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275851356,"owners_count":25540135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"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":["elasticsearch","importer","kibana","parses-xlsx-files","vertx"],"created_at":"2024-09-26T07:40:47.371Z","updated_at":"2025-09-18T23:23:54.061Z","avatar_url":"https://github.com/codingchili.png","language":"Java","readme":"# excelastic [![Build Status](https://travis-ci.org/codingchili/excelastic.svg?branch=master)](https://travis-ci.org/codingchili/excelastic)\n\nParses XLSX/XLS/CSV files into ElasticSearch using column titles from a specified row combined with data in columns on each row. May be used with Kibana or other visualization applications, example result using a transaction log in excel format  [image](https://raw.githubusercontent.com/codingchili/parser-banktrans-es/master/sample-redacted.png). The application comes with a web-interface to simplify uploading.\n\n![sample UI image](excelastic.png)\n\n## Features\n- import excel (.xlsx/.xls) files into ElasticSearch.\n- easy to use web interface, with support for commandline imports too.\n- csv files can be converted to .xlsx using office and then imported.\n- clear the index before importing, or append to existing index.\n- basic authentication when uploading from the application to elasticsearch.\n- support for importing to TLS enabled elasticsearch servers.\n- supports concurrent parsing of excel files and importing for better performance.\n- parses the whole file before starting the import - to make sure your index is not left in an undesired state.\n- specify elasticsearch ingest pipeline for a given spreadsheet.\n\n## Prerequisites\nThe application requires ElasticSearch as its output.\n\n1. ElasticSearch (version 5+/6+/7+) should not require any additional configuration or installation, just download and run from [Elastic](https://www.elastic.co/products). \n\n2. Grab the latest .jar file from [releases](https://github.com/codingchili/parser-excel-elasticsearch/releases).\n\nTested with ElasticSearch 5.6.2, 6.4.2, 7.0.0-alpha1, 7.4.0 and **7.10.1**.\n\n## Running with docker\n```console\ndocker run -it -p 8080:8080 -e es_port=9200 -e es_host=\u003chost IP\u003e codingchili/excelastic\n```\nNote: ElasticSearch needs to bind to the es_host address, this can be configured as\n`network.host: 0.0.0.0` in elasticsearch.yaml. Please remember that its possible to\nconnect to it from another machine when binding to all interfaces.\n\n## Running the JAR\n\nRunning the application, filename and index is required, to import from the terminal run:\n```console\njava -Xmx2g -jar excelastic.jar \u003cfileName\u003e \u003cindexName\u003e --mapping mappingName --pipeline pipelineName --clear\n```\nIf running with --clear, then the existing index will be cleared before the import starts.\n\nTo run with the web interface, run the following in your terminal:\n```console\njava -Xmx2g -jar excelastic.jar\n```\nWhen the application successfully connects to the ElasticSearch server, the browser will automatically open a new tab.\n\nIf any connection errors occur check that the ElasticSearch listen port matches with the elastic_port in the configuration file. Make sure that ElasticSearch is running by directing your browser at [localhost:9200](http://localhost:9200/).\n\nCompiling a new fatjar and run tests,\n```console\nmvn clean package\n```\n\n## Configuration\n\n├── configuration.json\n\nThe configuration file is placed in the same directory as the jar.\nAn example of the configuration:\n```javascript\n{\n  \"web_port\": 0,                    // the port the web interface listens on\n  \"elastic_port\": 9200,             // the port elasticsearch listens on\n  \"elastic_host\": \"localhost\",      // address to elasticsearch\n  \"elastic_tls\": false,             // set to true to use tls when indexing\n  \"authentication\": false,          // sends an \"Authentication\" header if true.\n  \"default_index\": \"excelastic\"     // the default index to use from the web interface.\n  \"basic\": \"username:password\"      // if authentication is true this is used as basic authentication.\n}\n```\nIf no configuration file is present the values in the above example will be used.\nNote that the comments cannot be included in the configuration file.\n\nIf no configuration file is present a new configuration file will be created using the default values listed here.\n\n### TLS\nWhen using a self-signed certificate on the ElasticSearch server the server certificate needs to be trusted. By default the client uses the JVM truststore, which will work if the certificate was signed by a reputable certificate authority. This isn't the case for most internal resources/servers. In this case we need to explicitly trust the organizations root certificate (issuer) or the servers certificate directly.\n\nImporting a .pem certificate into a new or existing keystore,\n\n```console\nkeytool -importcert -keystore mytruststore.jks -alias excelastic -file servercert.pem\n```\n\nSpecify a path to the truststore when starting excelastic,\n```console\njava -Djavax.net.ssl.trustStore=\"path/to/mytruststore.jks\" -jar excelastic.jar\n```\n\nOr if using Docker, with /opt/excelastic/mytruststore.jks as a volume\n```console\n-e java_opts=\"-Djavax.net.ssl.trustStore='/opt/excelastic/truststore.jks'\" --volume ./mytruststore.jks:/opt/excelastic/truststore.jks\n```\n\n##### Don't have the certificate?\nNo worries, it can be retrieved using a web browser, browse to \u003chost\u003e:9200 and inspect the certificate from the address bar.\n  \nRetrieving certificates with openssl client\n```console\nopenssl s_client -showcerts -connect \u003chost\u003e 9200\n# convert to format usable by java keytool.. (openssl x509 -outform PEM)\n```\n\nWhere \u003chost\u003e is localhost, or wherever the ElasticSearch server is running.\n\n## Contributing\n\nIf you want to contribute to this project, open an issue or pull request. :heart_eyes_cat: :metal:\n\n[![donate](https://img.shields.io/badge/donate-%CE%9ETH%20/%20%C9%83TC-ff00cc.svg?style=flat\u0026logo=ethereum)](https://commerce.coinbase.com/checkout/673e693e-be6d-4583-9791-611da87861e3)\n\n---\n\nThanks to [jProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html) for providing free open source licenses! Application performance is boosted!\n\n[![https://www.ej-technologies.com/products/jprofiler/overview.html](https://www.ej-technologies.com/images/product_banners/jprofiler_large.png)](https://www.ej-technologies.com/products/jprofiler/overview.html)\n\nThanks to [JetBrains](https://www.jetbrains.com/) for providing free open source licenses! Programmer productivity is boosted!\n\n![JetBrains logo](logo/jetbrains.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingchili%2Fexcelastic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingchili%2Fexcelastic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingchili%2Fexcelastic/lists"}