【BIGDATA】將普通文本文件導入ElasticSearch


 

 

以《刑法》文本.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" }'

 

 

 

至此,完成數據導入。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM