干货 | Elasticsearch、Kibana数据导出实战

一、问题引出

如下两个导出问题来自Elastic中文社区。mysql

问题一、kibana怎么导出查询数据?git

问题2:elasticsearch数据导出github

就像数据库数据导出同样,elasticsearch能够么?面试

或者找到它磁盘上存放数据的位置,拷贝出来,放到另外一个es服务器上或者转成本身要的数据格式?sql

实际业务实战中,你们或多或少的都会遇到导入、导出问题。根据数据源的不一样,基本能够借助:数据库

  • 一、程序写入
  • 二、数据同步

logstash/flume/cana/es_hadoopl等来实现关系型数据库(如:Oracle、mysql)、非关系型数据库(如:Mongo、Redis)、大数据(Hadoop、Spark、Hive)到Elasticsearch的写入。json

而数据的导出,一部分是业务场景须要,如:业务系统中支持检索结果导出为CSV、Json格式等。服务器

还有一部分是分析数据的需求:指望借助Kibana工具将仪表盘聚合结果导出、不须要借助程序尽快将知足给定条件的结果数据导出等。框架

这些快速导出的需求,最好借助插件或者第三方工具实现。elasticsearch

本文将重点介绍Kibana/Elasticsearch高效导出的插件、工具集。

二、指望导出数据格式

通常指望导出:CSV、Json格式。

三、Kibana导出工具

3.1 Kibana 官方导出

步骤1:点击Kibana;步骤2:左侧选择数据,筛选字段;步骤3:右侧点击:share->csv reports。步骤4:菜单栏:选择Management->Reporting->下载。

以上是kibana6.5.4的实操截图。

其余常见报表数据导出:

在Dashboard的右上角点击Inspect,再点击就能够导出对应可视化报表对应的数据。

3.2 数据透视表pivot-kibana

Kibana的数据透视表——使用Kibana UI中的任何其余工具同样使用数据透视表能够极大地简化数据工做。

Flexmonster Pivot能够交叉和快速地汇总业务数据并以交叉表格式显示结果。

地址:https://github.com/flexmonster/pivot-kibana/

筛选数据效果以下:

注意:建议7.X以上版本使用。低版本不支持。

四、Elasticsearch导出工具

4.1 es2csv

一、简介:用Python编写的命令行实用程序,用于以Lucene查询语法或查询DSL语法查询Elasticsearch,并将结果做为文档导出到CSV文件中。es2csv 能够查询多个索引中的批量文档,而且只获取选定的字段,这能够缩短查询执行时间。

二、地址:https://pypi.org/project/es2csv/

三、使用方法:

1es2csv -u 192.168.1.1:9200 -q '{"_source":{"excludes":["*gxn",,"*kex","vperxs","lpix"]},"query":{"term":{"this_topic":{"value":41}}}}' -r -i sogou_topic -o ~/export.csv复制代码

四、使用效果:官方最新更新支持5.X版本,实际验证6.X版本也可使用,导出效率高。

五、推荐指数:五星,

Elasticsearch导出CSV首选方案。

4.2 elasticsearch-dump

一、简介:Elasticsearch导入导出工具。

支持操做包含但不限于:

1)、数据导出

  • 导出索引、检索结果、别名或模板为Json
  • 导出索引为gzip
  • 支持导出大文件切割为小文件
  • 支持统一集群不一样索引间或者跨索引数据拷贝

2)、数据导入

  • 支持Json数据、S3数据导入Elasticsearch。

二、地址:

https://github.com/taskrabbit/elasticsearch-dump

三、使用方法:

1elasticdump \
2  --input=http://production.es.com:9200/my_index \
3  --output=query.json \
4  --searchBody='{"query":{"term":{"username": "admin"}}}'复制代码

如上,将检索结果导出为json文件。

更多导入、导出详见github介绍。

四、使用效果:早期1.X版本没有reindex操做,使用elasticdump解决跨集群数据备份功能。效果能够。

五、推荐指数:五星。

Elasticsearch导出json首选方案。

4.3 logstashoutputcsv

步骤1:安装logstashoutputcsv工具:

1D:\logstash-6.5.4\bin>logstash-plugin.bat  install  logstash-output-csv
2Validating logstash-output-csv
3Installing logstash-output-csv
4Installation successful复制代码

步骤2:配置conf文件核心的:输入input,输出ouput,中间处理filter都在以下的配置文件中。

  1. 输入:指定ES地址,索引,请求query语句;
  2. 输出:csv输出地址,输出字段列表。
1input {
 2 elasticsearch {
 3    hosts => "127.0.0.1:9200"
 4    index => "company_infos"
 5    query => '
 6    {
 7        "query": {
 8            "match_all": {}
 9        }   
10    } 
11  '
12  }
13}
14
15output {
16  csv {
17    # elastic field name
18    fields => ["no", "name", "age", "company_name", "department", "sex"]
19    # This is path where we store output.   
20    path => "D:\logstash-6.5.4\export\csv-export.csv"
21  }
22}复制代码

步骤3:执行导出

1D:\\logstash-6.5.4\bin>logstash -f ../config/logstash_ouput_csv.conf
 2Sending Logstash logs to D:/2.es_install/logstash-6.5.4/logs which is now configured via log4j2.properties
 3[2019-08-03T23:45:00,914][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
 4[2019-08-03T23:45:00,934][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.5.4"}
 5[2019-08-03T23:45:03,473][INFO ][logstash.pipeline        ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>8, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
 6[2019-08-03T23:45:04,241][INFO ][logstash.pipeline        ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x34b305d3 sleep>"}
 7[2019-08-03T23:45:04,307][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
 8[2019-08-03T23:45:04,740][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
 9[2019-08-03T23:45:05,610][INFO ][logstash.outputs.csv     ] Opening file {:path=>"D:/logstash-6.5.4/export/csv-export.csv"}
10[2019-08-03T23:45:07,558][INFO ][logstash.pipeline        ] Pipeline has terminated {:pipeline_id=>"main", :thread=>"#<Thread:0x34b305d3 run>"}复制代码

地址:

https://medium.com/@shaonshaonty/export-data-from-elasticsearch-to-csv-caaef3a19b69

五、小结

根据业务场景选择导出数据的方式。

您的业务场景有导出数据需求吗?如何导出的?欢迎留言讨论。

推荐阅读:

《深刻理解 Java 内存模型》读书笔记

面试-基础篇

Spring Boot 2.0 迁移指南

SpringBoot使用Docker快速部署项目

为何选择 Spring 做为 Java 框架?

SpringBoot RocketMQ 整合使用和监控

Spring Boot 面试的十个问题

使用 Spring Framework 时常犯的十大错误

SpringBoot Admin 使用指南

SpringBoot Kafka 整合使用

SpringBoot RabbitMQ 整合使用

Elasticsearch索引增量统计及定时邮件实现

Elasticsearch实战 | 必要的时候,还得空间换时间!干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

JVM面试问题系列:JVM 配置经常使用参数和经常使用 GC 调优策略

Apache Flink 是如何管理好内存的?

上篇好文:

ELK 实时日志分析平台环境搭建

相关文章
相关标签/搜索