目的
建立一个文件夹,文件夹中存放一些文本文件, 系统实时监测此文件夹,当有文件变化时候,自动执行入库功能(将文件内容推送到搜索库),
文件内容可以即时被搜索系统搜索到。
技术依赖
1、 NIFI -- 文件检测入库
2、 ElasticSearch -- 文件内存存储和搜索
3、 Kibana负责Elastic数据库的测试(dev tool功能)
NiFi流配置
Overview
ListFile -》 FetchFile -》 ExtractText -》 AttributeToJson -》 PutElasticHttp
ListFile
指定观测的文件夹。
FetchFile
配置不用修改。
符合获取文件内容,存储到flow content中。
ExtractText
新增最后一个属性 fullContent ,其值是捕获文件中所有内容。
此属性会作为 flow attribute出现。
AttributesToJSON
在第一行,指定需要转换的属性名称。
第三行,执行转换成的JSON数据,保存的位置,是content,还是attribute。
PutElasticHttp
第一行,执行elastic的服务器。
倒数第三到第五行
指定了elastic中存储的要素, 文档id + 索引名 + 索引类型
测试
创建一个含有 hello kitty 的文件。
在kibana上查询 kitty关键字:
参考:
https://gitee.com/streamone/full-text-search-in-action/blob/master/doc/ElasticSearch%20%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2%E5%AE%9E%E6%88%98.md