一、数据从文件导入elasticsearch

1、数据准备:

  1. 1、数据文件:test.json
  2. 2、索引名称:index
  3. 3、数据类型:doc
  4. 4、批量操作APIbulk
  1. {"index":{"_index":"index2","_type":"type2","_id":0}}
  2. {"age":10,"name":"jim"}
  3. {"index":{"_index":"index2","_type":"type2","_id":1}}
  4. {"age":16,"name":"tom"}

2、_bulk API导入ES的JSON文件需要满足一定的格式,每条记录之前,需要有文档ID且每一行\n结束

  1. curl -H 'Content-Type: application/x-ndjson' -s -XPOST localhost:9200/_bulk --data-binary @test.json

如果是在test.json文件中没有指定index名、type、id时:

  1. curl -H 'Content-Type: application/x-ndjson' -s -XPOST localhost:9200/index2/type2/_bulk --data-binary @test.json
  1. { "index" : { } }
  2. {"age":16,"name":"tom"}

但是id会自动生成

3、对于普通json文件的导入,可以logstash进行导入:

logstash的安装准备详细过程请查阅:

  1. https://www.cnblogs.com/yfb918/p/10763292.html

json数据准备

[root@master mnt]# cat data.json
{"age":16,"name":"tom"}
{"age":11,"name":"tsd"}

创建配置文件:

  1. [root@master bin]# cat json.conf
  2. input{
  3. file{
  4. path=>"/mnt/data.json"
  5. start_position=>"beginning"
  6. sincedb_path=>"/dev/null"
  7. codec=>json{
  8. charset=>"ISO-8859-1"
  9. }
  10. }
  11. }
  12. output{
  13. elasticsearch{
  14. hosts=>"http://192.168.200.100:9200"
  15. index=>"jsontestlogstash"
  16. document_type=>"doc"
  17. }
  18. stdout{}
  19. }

执行结果:

  1. [root@master bin]# ./logstash -f json.conf
  2. [2019-04-25T10:59:14,803][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
  3. [2019-04-25T10:59:16,084][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
  4. {
  5. "name" => "tom",
  6. "age" => 16,
  7. "path" => "/mnt/data.json",
  8. "@timestamp" => 2019-04-25T02:59:16.009Z,
  9. "host" => "master",
  10. "@version" => "1"
  11. }
  12. {
  13. "name" => "tsd",
  14. "age" => 11,
  15. "path" => "/mnt/data.json",
  16. "@timestamp" => 2019-04-25T02:59:16.096Z,
  17. "host" => "master",
  18. "@version" => "1"
  19. }

从结果中可以看到:默认增加了几个字段。那么我们想要这几个默认生成的字段我们应该怎么么办呢,可以如下解决:

在配置文件中使用filter进行过滤:

  1. [root@master bin]# cat json.conf
  2. input{
  3. file{
  4. path=>"/mnt/data.json"
  5. start_position=>"beginning"
  6. sincedb_path=>"/dev/null"
  7. codec=>json{
  8. charset=>"ISO-8859-1"
  9. }
  10. }
  11. }
  12. filter{
  13. mutate {
  14. remove_field => "@timestamp"
  15. remove_field => "@version"
  16. remove_field => "host"
  17. remove_field => "path"
  18. }
  19. }
  20. output{
  21. elasticsearch{
  22. hosts=>"http://192.168.200.100:9200"
  23. index=>"jsontestlogstash"
  24. document_type=>"doc"
  25. }
  26. stdout{}
  27. }

过滤之后的结果:

Logstash学习之路(二)Elasticsearch导入json数据文件的更多相关文章

  1. Solr学习笔记——导入JSON数据

    1.导入JSON数据的方式有两种,一种是在web管理界面中导入,另一种是使用curl命令来导入 curl http://localhost:8983/solr/baikeperson/update/j ...

  2. 【Spring学习笔记-MVC-4】SpringMVC返回Json数据-方式2

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  3. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  4. Qt 学习之路 2(35):文件

    Qt 学习之路 2(35):文件 豆子 2013年1月5日 Qt 学习之路 2 12条评论 文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了 ...

  5. Qt 学习之路 2(17):文件对话框

    Home / Qt 学习之路 2 / Qt 学习之路 2(17):文件对话框 Qt 学习之路 2(17):文件对话框  豆子  2012年9月24日  Qt 学习之路 2  85条评论 在前面的章节中 ...

  6. sqlcmd导入大数据文件

    sqlcmd导入大数据文件 SQLCMD 允许在Windows命令窗中通过命令行提示符运行脚本. 语法如下: sqlcmd  [  { { -U <login id> [ -P <p ...

  7. 阿里云Mysql导入大数据文件

    1.查询数据保存为CSV文件 select * from account into outfile '/root/account.csv' fields terminated by ',' enclo ...

  8. IOS学习之路二十(程序json转换数据的中文字符问题解决)

    ios请求web中的json数据的时候经常出现乱码问题: 例如请求结果可能如下:"\U00e5\U00a5\U00bd\U00e8\U00ae\U00a4" 在网上查到的解决方法是 ...

  9. Redis——学习之路二(初识redis服务器命令)

    上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息   s ...

随机推荐

  1. PHP代码审计分段讲解(9)

    22 弱类型整数大小比较绕过 <?php error_reporting(0); $flag = "flag{test}"; $temp = $_GET['password' ...

  2. 6种css3 transform图片悬停动态效果

    html骨架代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...

  3. 推荐系统实践 0x0e LS-PLM

    在之前介绍的几个模型中,存在这些问题: LR不能捕捉非线性,只能进行一次的回归预测 GBDT+LR虽然能够产生非线性特征组合,但是树模型不适用于超高维稀疏数据 FM利用二阶信息来产生变量之间的相关性, ...

  4. CF1416D Graph and Queries

    本题解用于作者加深算法印象,也欢迎各位的阅读. 题目大意 给你一张无向图,并给你两种操作: \(1~v\) :找到当前点 \(v\) 所在的联通块内权值最大的点,输出该点权值并将其权值改为 \(0\) ...

  5. 刚开始学习Javascript的一些基础小知识,从入门到崩溃,希望对大家有帮助(只适合初学者)

    一.简介 1.JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,js不能操作文件. 重要的开始啦!!!!! 引入javascript: 行间js <d ...

  6. MySQL和sparkSQL合并行

    表A 表B 从表A到表B MySQL 写法:select name, group_concat(score seperate ';') as score from A group by name sp ...

  7. 箭头函数this指向问题

    this指向本质 箭头函数this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this.正是因为它没有this ...

  8. Day10 python高级特性-- 生成器 Generator

    列表生成式可以创建列表,但是受内存限制,列表容量时有限的,创建一个巨量元素的列表,不仅占用很大的存储空间,当仅仅访问前几个元素时,后面的绝大多数元素占用的空间都被浪费了. 如果list的元素可以按照算 ...

  9. Day5 - 07 函数的参数-参数组合

    现在我们学完了位置参数.默认参数.可变参数.关键字参数.命名关键字参数五种参数类型.在Python中定义函数,可以使用这五种参数进行组合.但是参数定义的顺序必须是:必选参数.默认参数.可变参数.命名关 ...

  10. AWT06-事件处理

    在AWT中,用户的所有操作都要由事件处理来完成.Frame和组件本身没有处理事件的能力. 1.GUI事件处理机制 定义:在某个组件上发生某种操作时,自动触发某段代码. 事件处理涉及4个重要概念: 事件 ...