热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ElasticSearch数据导入

作者:dominating本文将介绍通过logstash收集.csv文件,oracle数据库数据再导入到ElasticSearch中,以及

作者:dominating

本文将介绍通过logstash收集.csv文件,oracle数据库数据再导入到ElasticSearch中,以及SuperMap iClient for Javascript 9D与ElasticSearch的结合使用。
###安装logstash
1、官网下载logstash-6.1.2.tar.gz,https://www.elastic.co/downloads/logstash
解压到/opt下
2、测试
运行logstash

bin/logstash -e 'input { stdin { } } output { stdout {} }'

输入hello world,logstash将会输出内容到控制台

2018-01-29T16 :36:49,507 +0000 0.0.0.0 hello world

###导入.csv文件
编写配置文件
收集和导入数据需要借助logstash的input,filter,output插件来编写配置文件:

input {file {path => ["/opt/flights2.csv"]start_position => "beginning"}
}
filter {csv {separator => ","columns => ["ident","lon","lat","temp","origin","destination"]}
}
output {elasticsearch {hosts => ["192.168.255.143:9200"]index => "flight"}
}

参数说明:
input插件
file:数据来源为文件型
path:#必选项,配置文件路径.如我使用的以下.csv文件
这里写图片描述
start_position:logstash从哪个位置读取文件数据,默认从尾部,值为:end,如果要导入历史数据则设置成:beginning
filter插件
csv:csv文件过滤器
separator:定义列分割符值。默认为逗号’,’
columns:定义一个列名称列表,按照在CSV中出现的顺序
output插件
elasticsearch输出目标为elasticsearch,配置host和index索引名

运行logstash

/opt/logstash-6.1.2/bin/logstash -f /opt/test.conf

-f:指定配置文件路径
这里写图片描述
查看ElasticSearch
这里写图片描述
这里写图片描述

"took": 9,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 100,"max_score": 1.0,"hits": [{"_index": "flight","_type": "doc","_id": "9pMPQWEBy48LTNYe0eDu","_score": 1.0,"_source": {"temp": "1.49E+12","@timestamp": "2018-01-29T08:36:50.287Z","host": "ubuntu-node3","lat": "29.824944","ident": "T0000","origin": "Lishe","destination": "Jiangbei","message": "T0000,121.465069,29.824944,1.49E+12,Lishe,Jiangbei\r","@version": "1","path": "/opt/flights2.csv","lon": "121.465069"}}]}

可以看到导入了100条数据,并且能够被查询到。
###导入oracle数据
需要在logstash所在机器上提前安装oracle客户端,并且配置好oracle的环境变量
测试oracle数据库是否能正常通讯
这里写图片描述
编写logstash配置文件
需要导入的oracle数据
这里写图片描述

input {jdbc {jdbc_driver_library => "/opt/ojdbc6.jar"jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"jdbc_connection_string => "jdbc:oracle:thin:@//192.168.15.89:1521/supermap"jdbc_user => "liu"jdbc_password => "supermap"schedule => "* * * * *"statement => "select * from SMDTV_341"type => "jdbc"last_run_metadata_path => "/home/elsearch/logstash-oradb.lastrun"}
}
filter {}
output {elasticsearch {hosts => ["192.168.255.143:9200"]index => "test"}
}

参数说明:
jdbc_driver_library:在oracle目录下,如我的在D:\app\wangwu\product\11.2.0\dbhome_1\jdbc\lib下面,复制到指定目录
这里写图片描述
schedule:查询间隔,"* * * * *"每分钟查询一次,不设置则只执行一次
last_run_metadata_path:最后更新时间文件位置
statement:SQL查询语句
index: 索引,可以先创建一个索引再导入

将文件保存为jdbc.conf放在logstash所在机器,运行

/opt/logstash-6.1.2/bin/logstash -f /opt/jdbc.conf

这里写图片描述
查看结果
这里写图片描述
说明数据已经导入成功,并且能够被查询到。
###导入地理坐标点数据
ElasticSearch提供了地理位置功能,并且能够把地理位置、全文搜索、结构化搜索和分析结合到一起。
ElasticSearch中存储地理坐标数据需要使用geo-point类型,并且必须提前显式声明
1、创建索引,并且声明location为geo-point类型

curl -XPUT '192.168.255.143:9200/test3?pretty' -H 'Content-Type: application/json' -d'
{ "mappings": { "capital" : { "properties" : { "location" : { "type" : "geo_point" } } } }
}
'

创建索引test3,映射字段location,并且声明为geo-point类型
2、编写配置文件
将带地理坐标的数据导入到ElasticSearch中
这里写图片描述

input { jdbc { jdbc_driver_library => "/opt/ojdbc6.jar" jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" jdbc_connection_string => "jdbc:oracle:thin:@//192.168.15.89:1521/supermap" jdbc_user => "liu" jdbc_password => "supermap" statement => "select * from SMDTV_361" type => "jdbc" last_run_metadata_path => "/home/elsearch/logstash-oradb.lastrun" }
}
filter { mutate { add_field => {"location" => "%{smy},%{smx}"} }
}
output { elasticsearch { hosts => ["192.168.255.143:9200"] index => "test3" document_type => "capital" }
}

由于原表中并没有location字段,所以filter中使用mutate插件给收集到的数据添加字段location
3、执行导入命令

/opt/logstash-6.1.2/bin/logstash -f /opt/jdbc.conf

4、网格聚合
将地理位置数据导入成功之后,我们就可以使用ElasticSearch提供的地理位置功能了,以下我们将执行Geohash网格聚合:

curl -XGET '192.168.255.143:9200/test3/capital/_search?pretty' -H 'Content-Type: application/json' -d'
{ "query": { "constant_score": { "filter": { "geo_bounding_box": { "location": { "top_left": { "lat": 90, "lon": -180 }, "bottom_right": { "lat": -90, "lon": 180 } } } } } }, "aggs": { "world": { "geohash_grid": { "field": "location", "precision": 1 } } }
}
'

这里写图片描述
如果对Geohash不太明白,可以参考官方的文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/geohash-grid-agg.html
###SuperMap iClient for Javascript 9D和ElasticSearch的结合使用
SuperMap iClient for Javascript 9D封装了ElasticSearch的Javascript API,我们以for Leaflet为例查询之前导入的数据。
1、 定义服务

liveESService = new SuperMap.ElasticSearch("http://192.168.255.143:9200");

2、 传入查询条件,成功回调函数

function loadLiveData() {var liveParameters = [];liveParameters.push({index: "flight"});liveParameters.push({"query": {"match_all":{}},"from": 0,"size": 100});liveESService.msearch({body: liveParameters}, function (error, result) {if (error) {widgets.alert.showAlert(JSON.stringify(error), false);return;}renderLive(result.responses);});}

使用new SuperMap.ElasticSearch(url).msearch(params,callback)方法,传入查询参数,定义回调函数
3、 处理数据添加到地图
这里写图片描述
4、更多关于SuperMap iClient for Javascript 9D和ElasticSearch的结合使用的例子
http://iclient.supermap.io/examples/leaflet/examples.html#Elasticsearch
热力/网格图
这里写图片描述

航班监控
这里写图片描述


推荐阅读
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 人脸检测 pyqt+opencv+dlib
    一、实验目标绘制PyQT界面,调用摄像头显示人脸信息。在界面中,用户通过点击不同的按键可以实现多种功能:打开和关闭摄像头, ... [详细]
  • Flink使用java实现读取csv文件简单实例首先我们来看官方文档中给出的几种方法:首先我们来看官方文档中给出的几种方法:第一种:Da ... [详细]
  • Ihavethisfollowinginputfile:我有以下输入文件:test.csvdone_cfg,,,,port<0>,clk_in,subcktA,ins ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 简介数组、CSV、表格、东西将一个数组转化为逗号为支解符的字符串(CSV)即表格数据。该源码来自于https:30secondsofcode.orgconstarrayToCSV( ... [详细]
  • JZOJ 1266. 玉米田
    1266.玉米田(cowfood.pasccpp)(FileIO):input:cowfood.inoutput:cowfood.outTimeLimits:1000msMemor ... [详细]
author-avatar
蔡少暖_171
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有