zoukankan      html  css  js  c++  java
  • 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文件。我们可以打开这个文件,并看到像这样的文档:

  • 相关阅读:
    一百个人眼中的一百种爱情
    苏迪曼杯羽毛球赛
    站点地图
    魔兽争霸微操教学(精华篇)
    (转)为winform程序注册闪屏(等待窗体)
    (转)Blend操作入门: 别站在门外偷看,快进来吧!
    (转)Asp.Net MVC的路由机制
    (转)VS2010在制作Setup项目的时候没有.NET 2.0的先决条件发行包
    (转)打造自己的LINQ Provider(上):Expression Tree揭秘
    (转)C#中的委托,匿名方法和Lambda表达式
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12092412.html
Copyright © 2011-2022 走看看