我正在嘗試從一些日志檔案中加載/攝取資料,這些日志檔案幾乎是存盤在某些第三供應商資料庫中的資料的副本。資料是管道分隔的“鍵值”值,我可以使用 logstash 中的 kv 過濾器插件將其拆分。
樣本資料 -
1.) 表="貿易"| TradeID="1234" |數量=100|價格=100.00|BuyOrSell="BUY"|Stock="ABCD Inc."
如果我們收到對上述記錄的修改,
2.) 表="貿易"| 貿易ID="1234" | 數量=120|價格=101.74 |BuyOrSell="BUY"|Stock="ABCD Inc."
我們需要更新在第一個條目上創建的記錄。所以,我需要將 TradeID 設為 id 欄位并需要更新記錄,這樣就不會出現相同的 TradeID 記錄重復。
logstash.conf 的代碼有點像下面 -
input {
file {
path => "some path"
}
}
filter {
kv {
source => "message"
field_split => "\|"
value_split => "="
}
}
output {
elasticsearch {
hosts => ["https://localhost:9200"]
cacert => "path of .cert file"
ssl => true
ssl_certificate_verification => true
index => "trade-index"
user => "elastic"
password => ""
}
}
uj5u.com熱心網友回復:
您需要更新您的elasticsearch輸出,如下所示:
output {
elasticsearch {
hosts => ["https://localhost:9200"]
cacert => "path of .cert file"
ssl => true
ssl_certificate_verification => true
index => "trade-index"
user => "elastic"
password => ""
# add the following to make it work as an upsert
action => "update"
document_id => "%{TradeID}"
doc_as_upsert => true
}
}
因此當 Logstash 讀取第一筆交易時,ID 為 1234 的檔案將不存在,將被更新插入(即創建)。當第二筆交易被讀取時,該檔案存在并且將被簡單地更新。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/452383.html
下一篇:安裝clearos系統
