FSCrawler组件是为了监听目标文件夹中的文件,如果有文件的增删,会同步给es库
一、下载FSCrawler
在安装包文件夹中已经准备好了所需要的安装文件,或者去官网下载,需要注意下载时需要和对应的es版本所对应
官网下载地址:https://fscrawler.readthedocs.io/en/fscrawler-2.9/installation.html
下载好之后解压即可。
二、配置对应的jdk
不同版本的FSCrawler对于jdk的要求不同,这个可以从说明文档中看到具体的要求
但是如果本地环境已经有了其他版本的jdk(如jdk1.8),又不想更换jdk11,可以针对于FSCrawler进行单独的jdk配置
1、先准备好对应版本的jdk11,解压后放到FSCrawler解压后的目录中,如图:
2、进行配置,进入FSCrawler解压后的目录下,打开bin/fscrawler文件,如下图操作,换成自己jdk11的路径即可
三、第一次启动
进入FSCrawler目录,输入以下命令:
启动一个FSCrawler,术语被称为:启动一个作业(job)
bin/fscrawler --config_dir ./test job_name
bin/fscrawler : 为固定写法
–config_dir: 设置一个参数dir,dir对应的路径中会存放你本次作业的相关配置信息
./test:这里是我自己想要把文件创建到哪里,即上面dir的具体值。 这样FSCrawler就会在该路径下创建我本次作业的相关信息
job_name :这里自定义,目的是为了给你本次的作业起一个名字
注意:可以不添加 --config_dir ./test
参数,官网给定的例子中也没有对应参数,但是会将作业相关的配置文件生成至~/.fscrawler/{job_name}
下
第一次使用上述命令启动时,因为是第一次,在对应的目录下没有_settings.yaml
的配置文件,所以FSCrawler会询问是否要创建,如下图:
四、配置
经过第三步的操作后,会在对应的目录下生成_settings.yaml
文件,具体的位置是在FSCrawler的解压路径下的test文件下,与job_name相同名字的文件夹中,如下图:
注意:如果在第一次启动时没有配置–config_dir参数,则
_settings.yaml
文件在默认路径下:~/.fscrawler/{job_name}/
vim _settings.yaml,进行自己的配置,如下图:
具体参数的信息可以参考官网的介绍:https://fscrawler.readthedocs.io/en/fscrawler-2.9/admin/fs/elasticsearch.html
五、再次启动
bin/fscrawler --config_dir ./test job_name
不报错,即启动成功,如下图:
六、查询验证
GET /bzgl/_search
{
"query": {
"match_all": {}
}
}
“bzgl”:换成自己的job名称
七、补充,设置mapping,设置ik分词器
因为FSCrawler有对于文件的mapping有固定的写法,如果我们要修改(比如:修改为ik分词器),需要更改对应的配置文件
到自己配置的--config_dir
目录下,_default/7
中配置_settings.json
文件,
修改完毕后,删除es中之前对应生成的索引库,然后重新启动FSCrawler即可
{
"settings": {
"number_of_shards": 1,
"index.mapping.total_fields.limit": 2000,
"analysis": {
"analyzer": {
"fscrawler_path": {
"tokenizer": "fscrawler_path"
}
},
"tokenizer": {
"fscrawler_path": {
"type": "path_hierarchy"
}
}
}
},
"mappings": {
"dynamic_templates": [
{
"raw_as_text": {
"path_match": "meta.raw.*",
"mapping": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
],
"properties": {
"attachment": {
"type": "binary",
"doc_values": false
},
"attributes": {
"properties": {
"group": {
"type": "keyword"
},
"owner": {
"type": "keyword"
}
}
},
"content": {
"type": "text",
"analyzer": "ik_smart" //比如此处,需要给content字段设置使用ik分词器
},
"file": {
"properties": {
"content_type": {
"type": "keyword"
},
"filename": {
"type": "keyword",
"store": true
},
"extension": {
"type": "keyword"
},
"filesize": {
"type": "long"
},
"indexed_chars": {
"type": "long"
},
"indexing_date": {
"type": "date",
"format": "dateOptionalTime"
},
"created": {
"type": "date",
"format": "dateOptionalTime"
},
"last_modified": {
"type": "date",
"format": "dateOptionalTime"
},
"last_accessed": {
"type": "date",
"format": "dateOptionalTime"
},
"checksum": {
"type": "keyword"
},
"url": {
"type": "keyword",
"index": false
}
}
},
"meta": {
"properties": {
"author": {
"type": "text"
},
"date": {
"type": "date",
"format": "dateOptionalTime"
},
"keywords": {
"type": "text"
},
"title": {
"type": "text"
},
"language": {
"type": "keyword"
},
"format": {
"type": "text"
},
"identifier": {
"type": "text"
},
"contributor": {
"type": "text"
},
"coverage": {
"type": "text"
},
"modifier": {
"type": "text"
},
"creator_tool": {
"type": "keyword"
},
"publisher": {
"type": "text"
},
"relation": {
"type": "text"
},
"rights": {
"type": "text"
},
"source": {
"type": "text"
},
"type": {
"type": "text"
},
"description": {
"type": "text"
},
"created": {
"type": "date",
"format": "dateOptionalTime"
},
"print_date": {
"type": "date",
"format": "dateOptionalTime"
},
"metadata_date": {
"type": "date",
"format": "dateOptionalTime"
},
"latitude": {
"type": "text"
},
"longitude": {
"type": "text"
},
"altitude": {
"type": "text"
},
"rating": {
"type": "byte"
},
"comments": {
"type": "text"
}
}
},
"path": {
"properties": {
"real": {
"type": "keyword",
"fields": {
"tree": {
"type": "text",
"analyzer": "fscrawler_path",
"fielddata": true
},
"fulltext": {
"type": "text"
}
}
},
"root": {
"type": "keyword"
},
"virtual": {
"type": "keyword",
"fields": {
"tree": {
"type": "text",
"analyzer": "fscrawler_path",
"fielddata": true
},
"fulltext": {
"type": "text"
}
}
}
}
}
}
}
}