[大資料]-Fscrawler匯入檔案(txt,html,pdf,worf...)到Elasticsearch5.3.1並配置同義字過濾

來源:互聯網
上載者:User

標籤:url   txt   解壓   parse   update   field   等等   _id   path   

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並配置同義字過濾

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.