Elasticsearch系列-logstash匯入資料
- 安裝準備
- 配置
- 問題
安裝準備
- 準備logstash:下載準備好elasticsearch相應版本的logstash版本檔案,我這里elasticsearch版本使用的是7.12.0,所以下載相應版本,官網下載地址
- 準備匯入資料:這里準備的是一個電影csv檔案資料,下載地址
配置
解壓logstash檔案,進入config目錄下,可以看到一個logstash-sample.conf檔案,復制一份并命名為logstash-movies.conf,
組態檔自己可以隨便命名,只要你自己能正確找到,并識別就行
編輯檔案:
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
# 讀取資料配置
input {
file {
# 匯入檔案目錄地址
path => "D:/Tool/ml-25m/movies.csv"
start_position => "beginning"
}
}
# 過濾 格式化資料配置
filter {
# 配置讀取csv檔案
csv {
# 設定拆分符為 逗號
separator => ","
# 指定csv檔案的欄位 按順序匹配
columns => ["id","content","genre"]
}
# 對genre欄位內容進行處理
mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
}
# 對content欄位內容進行處理
mutate {
split => ["content", "("]
# 添加欄位 title
add_field => { "title" => "%{[content][0]}"}
# 添加欄位 year
add_field => { "year" => "%{[content][1]}"}
}
mutate {
# 對year欄位進行型別轉換
convert => {
"year" => "integer"
}
strip => ["title"]
# 洗掉欄位
remove_field => ["path", "host","@timestamp","message","content"]
}
}
# 輸出配置
output {
# es相關配置
elasticsearch {
hosts => "http://localhost:9200"
index => "movies"
document_id => "%{id}"
#user => "elastic"
#password => "changeme"
}
stdout {}
}
進入bin目錄,啟動logstash:通過-f 引數指定組態檔啟動
.\logstash.bat -f D:\Tool\logstash-7.12.0-windows-x86_64\logstash-7.12.0\config\logstash-movies.conf
我這里使用的是本地測驗,使用的Windows系統,所以使用.bat執行,
問題
-
啟動資料沒辦法寫入到elasticsearch中:
原因:因為我是在Windows環境啟動,組態檔相關目錄是Windows系統檔案系統,注意分隔符,input { file { # 目錄層級使用 "/" 而不要直接拷貝復制 使用的 "\" 會導致找不到檔案,從而導致資料不能正常匯入 # path => "D:\Tool\ml-25m\movies.csv" 這種路徑不能正常匯入 path => "D:/Tool/ml-25m/movies.csv" start_position => "beginning" } } -
匯入資料成功后,洗掉相關索引,再次執行匯入,資料不能正常匯入
原因:logstash可能存在機制,識別資料的唯一性,避免重復匯入資料,具體情況,沒有具體去研究,
解決:洗掉logstash檔案夾中data目錄下的所有檔案,重新執行啟動logstash
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276996.html
標籤:其他
