Elasticsearch:如何把 Elasticsearch 中的数据导出为 CSV 格式的文件

Elastic 同时被 2 个专栏收录
494 篇文章 87 订阅
67 篇文章 41 订阅

本教程向您展示如何将数据从 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 文件。我们可以打开这个文件,并看到像这样的文档:

 

  • 1
    点赞
  • 0
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值