本教程向您展示如何將數據從Elasticsearch導出到CSV文件。 想象一下,您想要在Excel中打開一些Elasticsearch中的數據,並根據這些數據創建數據透視表。 這只是一個用例,其中將數據從Elasticsearch導出到CSV文件將很有用。
方法一
其實這種方法最簡單了。我們可以直接使用Kibana中提供的功能實現這個需求。
我們首先來准備數據:
再接着選擇Add data。這樣我們的Elasticsearch中就會有我們的eCommerce索引了。
我們接着選擇Discover,並選擇我們剛才建立的eCommerce索引。
我們同時要記得在time picker里選擇我們所需要的時間段:
我們可以做一些我們想要的搜索:
我們點擊左上角的Save按鈕:
接下來,我們點擊Share按鈕:
這樣我們就可以得到我們當前搜索結果的csv文件。我們只需要在Kibana中下載即可:
方法二
我們可以使用Logstash提供的功能來做這個。這個的好處是可以通過編程的方式來進行。Logstash不只光可以把數據傳上Elasticsearch,同時它還可以把數據從Elasticsearch中導出。
我們首先必須安裝和Elasticsearch相同版本的 Logstash。如果大家還不指定如安裝Logstash的話,請參閱我的文章“如何安裝Elastic棧中的Logstash”。
我們可以進一步查看我們的Logstash是否支持csv的output:
./bin/logstash-plugin list --group output
顯示:
logstash-output-cloudwatch
logstash-output-csv
logstash-output-elastic_app_search
logstash-output-elasticsearch
logstash-output-email
logstash-output-file
logstash-output-graphite
logstash-output-http
logstash-output-lumberjack
logstash-output-nagios
logstash-output-null
logstash-output-pipe
logstash-output-rabbitmq
logstash-output-redis
logstash-output-s3
logstash-output-sns
logstash-output-sqs
logstash-output-stdout
logstash-output-tcp
logstash-output-udp
logstash-output-webhdfs
顯然logstash-ouput-csv是在列表中。也就是說我們logstash支持csv格式的輸出。
我們建立如下的Logstash的配置文件:
convert_csv.conf
input {
elasticsearch {
hosts => "localhost:9200"
index => "kibana_sample_data_ecommerce"
query => '{
"query": {
"bool": {
"must": [
{
"match": {
"currency": "EUR"
}
},
{
"match": {
"products.quantity": 1
}
}
]
}
}
}'
}
}
output {
csv {
# This is the fields that you would like to output in CSV format.
# The field needs to be one of the fields shown in the output when you run your
# Elasticsearch query
fields => ["category", "customer_birth_date", "customer_first_name", "customer_full_name", "day_of_week"]
# This is where we store output. We can use several files to store our output
# by using a timestamp to determine the filename where to store output.
path => "/Users/liuxg/tmp/csv-export.csv"
}
}
請注意上面的path需要自己去定義時候自己環境的路徑。這里我們在fields里定義了我們想要的字段。
然后,我們可以運行我們的Logstash應用:
./bin/logstash -f ~/data/convert_csv.conf
這樣在我們定義的文件路徑/Users/liuxg/tmp/csv-export.csv可以看到一個輸出的csv文件。我們可以打開這個文件,並看到像這樣的文檔: