Skip to main content

A CLI tool for exporting data from Elasticsearch into a CSV file

Command line utility, written in Python, for querying Elasticsearch in Lucene query syntax or Query DSL syntax and exporting result as documents into a CSV file. This tool can query bulk docs in multiple indices and get only selected fields, this reduces query execution time.

Quick Look Demo

https://cloud.githubusercontent.com/assets/7491121/12016825/59eb5f82-ad58-11e5-81eb-871a49e39c37.gif

Requirements

This tool should be used with Elasticsearch 5.x version, for older version please check 2.x release.
You also need Python 2.7.x and pip.

Installation

>From source:

$ pip install git+https://github.com/taraslayshchuk/es2csv.git

>From pip:

$ pip install es2csv

Usage

$ es2csv [-h] -q QUERY [-u URL] [-a AUTH] [-i INDEX [INDEX ...]]
         [-D DOC_TYPE [DOC_TYPE ...]] [-t TAGS [TAGS ...]] -o FILE
         [-f FIELDS [FIELDS ...]] [-S FIELDS [FIELDS ...]] [-d DELIMITER]
         [-m INTEGER] [-s INTEGER] [-k] [-r] [-e] [--verify-certs]
         [--ca-certs CA_CERTS] [--client-cert CLIENT_CERT]
         [--client-key CLIENT_KEY] [-v] [--debug]

Arguments:
 -q, --query QUERY                        Query string in Lucene syntax.               [required]
 -o, --output-file FILE                   CSV file location.                           [required]
 -u, --url URL                            Elasticsearch host URL. Default is http://localhost:9200.
 -a, --auth                               Elasticsearch basic authentication in the form of username:password.
 -i, --index-prefixes INDEX [INDEX ...]   Index name prefix(es). Default is ['logstash-*'].
 -D, --doc-types DOC_TYPE [DOC_TYPE ...]  Document type(s).
 -t, --tags TAGS [TAGS ...]               Query tags.
 -f, --fields FIELDS [FIELDS ...]         List of selected fields in output. Default is ['_all'].
 -S, --sort FIELDS [FIELDS ...]           List of <field>:<direction> pairs to sort on. Default is [].
 -d, --delimiter DELIMITER                Delimiter to use in CSV file. Default is ",".
 -m, --max INTEGER                        Maximum number of results to return. Default is 0.
 -s, --scroll-size INTEGER                Scroll size for each batch of results. Default is 100.
 -k, --kibana-nested                      Format nested fields in Kibana style.
 -r, --raw-query                          Switch query format in the Query DSL.
 -e, --meta-fields                        Add meta-fields in output.
 --verify-certs                           Verify SSL certificates. Default is False.
 --ca-certs CA_CERTS                      Location of CA bundle.
 --client-cert CLIENT_CERT                Location of Client Auth cert.
 --client-key CLIENT_KEY                  Location of Client Cert Key.
 -v, --version                            Show version and exit.
 --debug                                  Debug mode on.
 -h, --help                               show this help message and exit

[ Usage Examples | Release Changelog ]

Release Changelog

5.5.2 (2018-03-21)

  • Fixed encoding in field name to UTF-8. (Issue #35)

  • Added –sort(-S) argument for sorting data by selected field. (Issue #41)

  • Added requirement for version of python 2.7.*. (Issue #8, #12, #20, #29, #33 and #38)

  • Update documentation with examples.

  • Updating version elasticsearch-py to 5.5.*.

5.2.1 (2017-04-02)

  • Added –verify-certs, –ca-certs, –client-cert, –client-key arguments for SSL configuration. (Issue #11 and #24, Pull #22)

  • Added –scroll_size(-s) argument to specify the scroll size of requests. (Pull #27)

5.2.0 (2017-02-16)

  • Updating version elasticsearch-py to 5.2.* and added support of Elasticsearch 5. (Issue #19)

2.4.3 (2017-02-15)

  • Update doc according to wildcard support in fields naming.

  • Added support of old version pip. (Issue #16)

2.4.2 (2017-02-14)

  • Added wildcard support in fields naming.

  • Removed column sorting. (Issue #21)

2.4.1 (2016-11-10)

  • Added –auth(-a) argument for Elasticsearch basic authentication. (Pull #17)

  • Added –doc_types(-D) argument for specifying document type. (Pull #13)

2.4.0 (2016-10-26)

  • Added JSON validation for raw query. (Issue #7)

  • Added checks to exclude hangs during connection issues. (Issue #9)

  • Updating version elasticsearch-py to 2.4.0 and freeze this dependence according to mask 2.4.*. (Issue #14)

  • Updating version progressbar2 to fix issue with visibility.

1.0.3 (2016-06-12)

  • Added option to read query string from file –query(-q) @’~/filename.json’. (Issue #5)

  • Added –meta_fields(-e) argument for selecting meta-fields: _id, _index, _score, _type. (Issue #6)

  • Updating version elasticsearch-py to 2.3.0.

1.0.2 (2016-04-12)

  • Added –raw_query(-r) argument for using the native Query DSL format.

1.0.1 (2016-01-22)

  • Fixed support elasticsearch-1.4.0.

  • Added –version argument.

  • Added history changelog.

1.0.0.dev1 (2016-01-04)

  • Fixed encoding in CSV to UTF-8. (Issue #3, Pull #1)

  • Added better progressbar unit names. (Pull #2)

  • Added pip installation instruction.

1.0.0.dev0 (2015-12-25)

  • Initial registration.

  • Added first dev-release on github.

  • Added first release on PyPI.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

es2csv-5.5.2.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

es2csv-5.5.2-py27-none-any.whl (11.7 kB view details)

Uploaded Python 2.7

File details

Details for the file es2csv-5.5.2.tar.gz.

File metadata

  • Download URL: es2csv-5.5.2.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for es2csv-5.5.2.tar.gz
Algorithm Hash digest
SHA256 0ac4d64b5eaa1a4c24b008657ffeeeb5ad84a1b903f467b55d2e72eb1e963af1
MD5 5f27ccd2a793391ce97b1be436ba6118
BLAKE2b-256 7d4d331423adf788f1c82b0402604821011bf4d199230d75504a565f0f61be28

See more details on using hashes here.

File details

Details for the file es2csv-5.5.2-py27-none-any.whl.

File metadata

File hashes

Hashes for es2csv-5.5.2-py27-none-any.whl
Algorithm Hash digest
SHA256 cf53dcbb29f6bc7c29014039049ac7d081be97ae7630726c56129e2aabae997a
MD5 28a4714767793dc1517a2a08c606fbfa
BLAKE2b-256 34379061c0bdb49153629fe61ce63701a5f9c9c85743c4564a68d841eb813fb9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

5.5.2 This release

2 files

5.2.1

2 files

5.2.0

2 files

2.4.4

2 files

2.4.3

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page