Elasticsearch:如何把Elasticsearch中的數據導出為CSV格式的文件


本教程向您展示如何將數據從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文件。我們可以打開這個文件,並看到像這樣的文檔:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM