[大數據]-Fscrawler導入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1並配置同義詞過濾
阿新 • • 發佈:2017-05-25
app alt pil 所在 word jar包 raw 文件名 包含 job_name需要自己設定,第一次啟動這個job會創建一個相關的_setting.json用來配置文件和es相關的信息。如下:
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
- 編輯這個文件: 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
跟前面幾篇博客中提到的自定義分詞器創建同義詞過濾一模一樣,裏面的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並配置同義詞過濾