原文发布时间:2018-03-30 11:27:24
作者:张军
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。安装好ElasticSearch后,用浏览器可进行验证是否安装好,在浏览器中输入localhost:9200或者127.0.0.1:9200出现如下界面说明安装成功。
如何利用FME将数据写入ElasticSearch或者从ElasticSearch中读取数据?在介绍FME读写ElasticSearch前,介绍一下个人理解的ElasticSearch中查询的问题,如下查询语句:
http://localhost:9200/test2/test2/_search/?pretty 第一个“test2”为Index name,第二个test2为Tpye name,后面的就是固定的查询语句串联。即:
<Node>:<Port>/<Index>/<Type><_search>….
Node>:节点ip,
<port>:节点端口号,默认9200,
<Index>:索引名,
<Type>:索引类型
以下方法是基于FME 2018和ElasticSearch 6.1.1进行的应用样例。
FME写入Elasticsearch
在FME中是提供了ElasticSearch数据格式的选项,当需要将数据导入到ElasticSearch时,直接添加写模块,在添加写模块的时候,参数设置时有两个主要参数需要注意
一个是Server参数,填写的是ElasticSearch的服务地址,通常本机的服务地址是localhost:9200或者127.0.0.1:9200,注意,从浏览器上复制的地址前面带有“http://”,在这里输入地址的时候千万不要将“http://”加上;
另一个需要注意的是Index参数,该参数是ElasticSearch中的index名称,通常是全部小写,如果有大写,虽然在整个模板运行到时候不会有错误,但是最终查询的时候将无法查询到数据。
添加好写模块后,在主界面打开写模块,如下图,注意”Type Name”参数,是可以自定义,也可以根据输入数据的图层来区分,但是名称同样也需要全部小写,否则会无法查询到数据。
数据写入ElasticSearch中后,可使用ElasticSearch的查询语句,在浏览器中查看数据写入情况。输入查询地址http://localhost:9200/test5/test5/_search/?pretty后如下:
在这里,为了方便大家查看写入的数据,推荐大家使用Elasticsearch可视化插件elasticsearch-head-master来查看数据。
FME读取Elasticsearch
FME中也提供了可以直接读取Elasticsearch的数据格式,在模版中直接添加读模块,设置Server、Index、Type List参数,即可读取相关的数据内容。根据FME读模块的设置,可以看出,一个索引文件下可以有多个Type,因此,我们在读取的时候选择需要读取的Type名称即可。
在读取的结果中,将原有数据的属性项直接读取,也可以用读取json文件的方式。
当然,利用作为存储大数据的Elasticsearch,数据量日益增多,利用FME不可能每次将所有的数据读取出来在进行筛选,因此,我们可以在FME的读模块中添加相应的JSON查询语句,去筛选读取需要的数据内容。
也可以利用HTTPCaller转换器进行读取。
需要注意的是,在Elasticsearch的查询语句中收到from和size值的限制,每次能获取的数据量不超过10000条,即from和size的值加起来不能超过10000,具体的说明请查看Elasticsearch相关的查询介绍。
以上内容是利用FME 2018和Elasticsearch 6.1.1所做的非空间数据读写、查询样例,感兴趣的朋友可以尝试一下空间数据的读写以及查询功能。