[大数据]-Fscrawler导入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1并配置同义词过滤...
fscrawler是ES的一個文件導(dǎo)入插件,只需要簡單的配置就可以實(shí)現(xiàn)將本地文件系統(tǒng)的文件導(dǎo)入到ES中進(jìn)行檢索,同時支持豐富的文件格式(txt.pdf,html,word...)等等。下面詳細(xì)介紹下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需要自己設(shè)定,第一次啟動這個job會創(chuàng)建一個相關(guān)的_setting.json用來配置文件和es相關(guān)的信息。如下:
- 編輯這個文件:?vim ~/.fscrawler/job_1/_settting.json?修改如下:
name表示的是一個job的name同時也是ES數(shù)據(jù)的的index,URL:代表需要導(dǎo)入的文件所在的文件夾。update_rate:表示多久刷新一次,host:連接es的IP地址和端口號。type:代表的就是ES的type。改完之后保存就可以運(yùn)行,fs就會將數(shù)據(jù)導(dǎo)入了。
- 導(dǎo)入數(shù)據(jù)(會開啟一個線程,根據(jù)設(shè)定的時間進(jìn)行數(shù)據(jù)刷新,我們修改文件ES也能得到新的數(shù)據(jù)):bin/fscrawler job_name ?
二、fscrawler配置IK分詞器和同義詞過濾:
- 初始化一個job后系統(tǒng)會生成三個配置文件:doc.json,folder.json,_setting.json(1,2,5代表ES的版本號,我們是5.x版本就修改5文件夾下的配置文件。)這三個文件用來創(chuàng)建index,mapping。
- 配置IK分詞首先在_default/5/_setting.json中配置analysis:刪掉原有的配置文件,添加如下內(nèi)容:
- {"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": ["| => |"]}}}}
}
跟前面幾篇博客中提到的自定義分詞器創(chuàng)建同義詞過濾一模一樣,里面的filter可以選擇刪除,保留必要的部分,這樣我們自定義了兩種分詞器:by_smart,by_max_word.
- 修改_default/5/doc.json:刪除掉所有字段的分詞器;analyzer:"xxx",因?yàn)樵谶@里只有一個字段需要分詞那就是content(文件的內(nèi)容),給content節(jié)點(diǎn)添加加分詞器。如下:
- "content" : {"type" : "text","analyzer":"by_max_word" #添加此行。。。},
- 配置就完成了,同樣的再次啟動job:?bin/fscrawler job_name
- 訪問9100:可以看到index已經(jīng)創(chuàng)建好,如下圖:
- 同義詞查詢:我在同義詞中配置了西紅柿和番茄,在/tmp/es文件夾下中添加了一個包含西紅柿和番茄的文件,9100端口用以下語句查詢:
- {"query": {"match": {"content": "番茄"}},"highlight": {"pre_tags": ["<tag1>","<tag2>"],"post_tags": ["</tag1>","</tag2>"],"fields": {"content": {}}}
}
結(jié)果如下:
- {"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上連接失敗。
轉(zhuǎn)載于:https://www.cnblogs.com/NextNight/p/6904791.html
總結(jié)
以上是生活随笔為你收集整理的[大数据]-Fscrawler导入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1并配置同义词过滤...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nachos
- 下一篇: iPhone手机硬件拆解介绍