fscrawler是ES的一个文件导入插件,只需要简单的配置就可以实现将本地文件系统的文件导入到ES中进行检索,同时支持丰富的文件格式(txt.pdf,html,word...)等等。下面详细介绍下fscrawler是如何工作和配置的。

一、fscrawler的简单使用:

1、下载: wget https://repo1.maven.org/maven2/fr/pilato/elasticsearch/crawler/fscrawler/2.2/fscrawler-2.2.zip

2、解压:  unzip fscrawler-2.2.zip  目录如下:bin下两个脚本,lib下全部是jar包。

3、启动: bin/fscrawler job_name job_name需要自己设定,第一次启动这个job会创建一个相关的_setting.json用来配置文件和es相关的信息。如下:

  • 编辑这个文件: vim ~/.fscrawler/job_1/_settting.json 修改如下:
  • name表示的是一个job的name同时也是ES数据的的index,URL:代表需要导入的文件所在的文件夹。update_rate:表示多久刷新一次,host:连接es的IP地址和端口号。type:代表的就是ES的type。改完之后保存就可以运行,fs就会将数据导入了。

  • 导入数据(会开启一个线程,根据设定的时间进行数据刷新,我们修改文件ES也能得到新的数据):bin/fscrawler job_name

二、fscrawler配置IK分词器和同义词过滤:

  • 初始化一个job后系统会生成三个配置文件:doc.json,folder.json,_setting.json(1,2,5代表ES的版本号,我们是5.x版本就修改5文件夹下的配置文件。)这三个文件用来创建index,mapping。
  • 配置IK分词首先在_default/5/_setting.json中配置analysis:删掉原有的配置文件,添加如下内容:
  • {
    "settings": {
    "analysis": {
    "analyzer": {
    "by_smart": {
    "type": "custom",
    "tokenizer": "ik_smart",
    "filter": [
    "by_tfr",
    "by_sfr"
    ],
    "char_filter": [
    "by_cfr"
    ]
    },
    "by_max_word": {
    "type": "custom",
    "tokenizer": "ik_max_word",
    "filter": [
    "by_tfr",
    "by_sfr"
    ],
    "char_filter": [
    "by_cfr"
    ]
    }
    },
    "filter": {
    "by_tfr": {
    "type": "stop",
    "stopwords": [
    " "
    ]
    },
    "by_sfr": {
    "type": "synonym",
    "synonyms_path": "analysis/synonyms.txt"
    }
    },
    "char_filter": {
    "by_cfr": {
    "type": "mapping",
    "mappings": [
    "| => |"
    ]
    }
    }
    }
    }
    }

    跟前面几篇博客中提到的自定义分词器创建同义词过滤一模一样,里面的filter可以选择删除,保留必要的部分,这样我们自定义了两种分词器:by_smart,by_max_word.

  • 修改_default/5/doc.json:删除掉所有字段的分词器;analyzer:"xxx",因为在这里只有一个字段需要分词那就是content(文件的内容),给content节点添加加分词器。如下:
  • "content" : {
    "type" : "text",
    "analyzer":"by_max_word" #添加此行。。。
    },
  • 配置就完成了,同样的再次启动job: bin/fscrawler job_name
  • 访问9100:可以看到index已经创建好,如下图:
  • 同义词查询:我在同义词中配置了西红柿和番茄,在/tmp/es文件夹下中添加了一个包含西红柿和番茄的文件,9100端口用以下语句查询:
  • {
    "query": {
    "match": {
    "content": "番茄"
    }
    },
    "highlight": {
    "pre_tags": [
    "<tag1>",
    "<tag2>"
    ],
    "post_tags": [
    "</tag1>",
    "</tag2>"
    ],
    "fields": {
    "content": {}
    }
    }
    }

    结果如下:

  • {
    "hits": [
    {
    "_index": "jb_8",
    "_type": "doc",
    "_id": "3a15a979b4684d8a5d86136257888d73",
    "_score": 0.49273878,
    "_source": {
    "content": "我爱吃西红柿鸡蛋面。还喜欢番茄炒蛋饭",
    "meta": {
    "raw": {
    "X-Parsed-By": "org.apache.tika.parser.DefaultParser",
    "Content-Encoding": "UTF-8",
    "Content-Type": "text/plain;charset=UTF-8"
    }
    },
    "file": {
    "extension": "txt",
    "content_type": "text/plain;charset=UTF-8",
    "last_modified": "2017-05-24T10: 22: 31",
    "indexing_date": "2017-05-25T14: 08: 10.881",
    "filesize": 55,
    "filename": "sy.txt",
    "url": "file: ///tmp/es/sy.txt"
    },
    "path": {
    "encoded": "824b64ab42d4b63cda6e747e2b80e5",
    "root": "824b64ab42d4b63cda6e747e2b80e5",
    "virtual": "/",
    "real": "/tmp/es/sy.txt"
    }
    },
    "highlight": {
    "content": [
    "我爱吃<tag1>西红柿</tag1>鸡蛋面。还喜欢<tag1>番茄</tag1>炒蛋饭"
    ]
    }
    }
    ]
    }
  • 完整的IK分词同义词过滤就配置完成了。

  • 如下图是txt,html格式,其他格式亲测可用,但是文件名中文会乱码。

注意:

  要选择fs2.2的版本,2.1的版本在5.3.1的ES上连接失败。

[大数据]-Fscrawler导入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1并配置同义词过滤的更多相关文章

  1. [大数据]-Logstash-5.3.1的安装导入数据到Elasticsearch5.3.1并配置同义词过滤

    阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置,前面介绍了ES,Kibana5.3.1的安装配置,以及IK分词的安装和同义词设置,这里主要记录L ...

  2. MYSQL数据库导入大数据量sql文件失败的解决方案

    1.在讨论这个问题之前首先介绍一下什么是"大数据量sql文件". 导出sql文件.选择数据库-----右击选择"转储SQL文件"-----选择"结构和 ...

  3. POI实现大数据EXCLE导入导出,解决内存溢出问题

    使用POI能够导出大数据保证内存不溢出的一个重要原因是SXSSFWorkbook生成的EXCEL为2007版本,修改EXCEL2007文件后缀为ZIP打开可以看到,每一个Sheet都是一个xml文件, ...

  4. .net core利用MySqlBulkLoader大数据批量导入MySQL

    最近用core写了一个数据迁移小工具,从SQLServer读取数据,加工后导入MySQL,由于数据量太过庞大,数据表都过百万,常用的dapper已经无法满足.三大数据库都有自己的大数据批量导入数据的方 ...

  5. Mysql 大数据量导入程序

    Mysql 大数据量导入程序<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  6. 学习推荐《零起点Python大数据与量化交易》中文PDF+源代码

    学习量化交易推荐学习国内关于Python大数据与量化交易的原创图书<零起点Python大数据与量化交易>. 配合zwPython开发平台和zwQuant开源量化软件学习,是一套完整的大数据 ...

  7. [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world

    [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world 原文链接:http://www.cnblogs.com/blog5277/ ...

  8. R—读取数据(导入csv,txt,excel文件)

    导入CSV.TXT文件 read.table函数:read.table函数以数据框的格式读入数据,所以适合读取混合模式的数据,但是要求每列的数据数据类型相同. read.table读取数据非常方便,通 ...

  9. 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

    1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | vie ...

随机推荐

  1. 第35次Scrum会议(11/23)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文小组照片 二.开会信息 时间:2017/11/23 17:03~17:24,总计21min.地点:东北师 ...

  2. a标签的href为空的问题

    在表格里写一个a标签链接刷新表格的时候,没注意,把a标签的href设置为""空字符串,导致每次刷新表格之后会再刷新一次整体页面,找了很久都没发现问题出在哪里,最后无意之间,鼠标在一 ...

  3. 必应词典手机版(IOS版)与有道词典(IOS版)之问卷分析

    我们制定了一个调查问卷: 1.年龄分布: 2.地域分布: 3.是否用过必应词典? 对于必应词典还是没用过的人数更多. 4.是否用过有道词典? 有道词典的使用率更高一点. 5.对于必应的基本功能给几分? ...

  4. 2018-2019-20172329 《Java软件结构与数据结构》第六周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第六周学习总结 学无止境,希望自己可以坚持下去,就算自己有太多的事情也不希望自己落下学习,也希望自己可以活成自己想要的样 ...

  5. 20172322 实验一《Java开发环境的熟悉》实验报告

    172322 2017-2018-2 <程序设计与数据结构>实验一报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 张昊然 学号:20172322 实验教师:王志强 ...

  6. C/C++:static用法总结

    前言:static是C/C++中一个很重要的关键字,最近阅读了很多博客和资料,遂在此对自己的学习笔记进行简单的总结并发表在这里 一.C语言中的static • 静态全局变量:在全局变量之前加上关键字s ...

  7. 1~n中1的和

    题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数: 要求:写一个函数f(n),返回1到n之间出现“1“的个数, 思路: 1.先判断这个数共多少位,假设为n位: ...

  8. 软工1816 · Beta冲刺(6/7)

    团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 推进Web端完成开发 推进修改一些后端接口的逻辑 着手制作视频 接下来的计划 ...

  9. angularJS1笔记-(8)-内置指令

    index.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  10. 二叉查找树ADT--C语言描述

    首先给出此ADT的声明: struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree ...