以《刑法》文本.txt為例。
一、格式化數據
1,首先,ElasticSearch只能接收格式化的數據,所以,我們需要將文本文件轉換為格式化的數據---json。
下圖為未處理的文本文件。
2,這里,使用python文件操作,將文本格式化為ElasticSearch可識別的json格式。
#python 3.6 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'BH8ANK' ''' 最終將輸出格式改為 {"index":{"_index":"xingfa","_id":1}} {"text_entry":"犯罪的行為或者結果有一項發生在中華人民共和國領域內的,就認為是在中華人民共和國領域內犯罪。"} ''' '''讀取文件 ''' a = open(r"D:\xingfa.txt", "r",encoding='utf-8') out = a.read() #print(out) TypeList = out.split('\n') #print(TypeList) lenth = len(TypeList) print(lenth) number = 1 ju_1 = '{"index":{"_index":"xingfa","_id":' ju_2 = '{"text_entry":"' # print(ju_1) for x in TypeList: res_1 = ju_1 + str(number) + '}}'+'\n' print(res_1) a = open(r"D:\out.json", "a", encoding='UTF-8') a.write(res_1) res_2 = ju_2 + x + '"}'+'\n' print(res_2) a = open(r"D:\out.json", "a", encoding='UTF-8') a.write(res_2) a.close() number+=1
3,執行后,輸出的json內容為:
二、將數據導入ElasticSearch
1,我們要為即將導入的數據,建立映射。此操作可以在kibana或命令行完成。
PUT /xingfa
{
"mappings": {
"doc": {
"properties": {
"text_entry":{"type":"keyword"}
}
}
}
}
2,登錄虛擬機,將之前生成的out.json文件,導入到對應ElasticSearch集群中。
我們的ES組網情況如上圖。
操作如下:
命令如下:
curl -H 'Content-Type: application/x-ndjson' -XPOST '10.0.0.19:9200/xingfa/doc/_bulk?pretty' --data-binary @out.json
等待命令執行完成后,即可登錄kibana去查詢對應的數據了。
使用查詢語句:
GET /xingfa/_search/ { "query": { "match_all": {} }, "size":"9999" //此處設置為9999,主要原因是,不加參數的話,默認搜索結果僅顯示部分,一般是5. }
也可以直接在虛擬機命令行里,查詢這個索引,確認數據是否已經完成上傳。
使用查詢語句:
curl -XGET "http://10.0.0.19:9200/xingfa/_search/" -H 'Content-Type: application/json' -d' { "query": { "match_all": {} }, "size": "9999" }'
至此,完成數據導入。