我需要編寫一些索引作業,每天運行一次,查詢我們的Oracle數據庫表和索引到ElasticSearch中。由於存在表依賴關係,因此一些表首先索引,其他表首先索引。但是在這個索引過程中,我需要增強進入ES索引的字段,以及登錄到我們的Oracle數據庫表作業狀態,甚至記錄成功/失敗索引過程的記錄。試圖使用jdbc river ElasticSearch插件進行批處理
我可以使用Elastic Search插件JDBC-River嗎?
我需要編寫一些索引作業,每天運行一次,查詢我們的Oracle數據庫表和索引到ElasticSearch中。由於存在表依賴關係,因此一些表首先索引,其他表首先索引。但是在這個索引過程中,我需要增強進入ES索引的字段,以及登錄到我們的Oracle數據庫表作業狀態,甚至記錄成功/失敗索引過程的記錄。試圖使用jdbc river ElasticSearch插件進行批處理
我可以使用Elastic Search插件JDBC-River嗎?
我擔心的是在查詢之後通過一個插入語句重新登錄到RDBS從數據庫中提取。我接觸了jdbc-river的創建者。他提到這是我應該如何配置的東西:真的很有幫助!
curl -XDELETE '0:9200/_river/my_jdbc_river/
curl -XPUT '0:9200/_river/my_jdbc_river/_meta' -d '
{
"type": "jdbc",
"jdbc": {
"url": "jdbc:mysql://localhost:3306/test",
"user": "",
"password": "",
"schedule": "0 0-59 0-23 ? * *",
"sql": [
{
"statement": "select *, created as _id, \"myjdbc\" as _index, \"mytype\" as _type from orders"
},
{
"statement": "insert into ack(n,t,c) values(?,?,?)",
"parameter": [
"$job",
"$now",
"$count"
]
}
]
}
}'
是的,您可以通過在jdbc河中使用poll
參數來完成此操作。詳細
輪詢
JDBC河流運行被在給定的時間間隔重複。這種方法也被稱爲polling
。您可以使用poll參數指定輪詢時間間隔,該參數需要一個Elasticsearch時間值。默認值是1h
。
例: -
curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "",
"password" : "",
"sql" : "select * from orders",
"poll" : "1h"
},
"index" : {
"index" : "jdbc",
"type" : "jdbc",
"bulk_size" : 100,
"max_bulk_requests" : 30,
"bulk_timeout" : "60s"
}
}'
供您參考: - https://github.com/jprante/elasticsearch-river-jdbc/issues/92
但我真正關心的是插入。重新插入RDBMS以記錄索引到彈性的記錄以及失敗的記錄。我如何創建這個邏輯?謝謝 –
@TazMan我不認爲jdbc河支持,你最好做所有的索引/記錄你的自我,如果你需要的是其他然後簡單的批量索引從數據庫到彈性 –
'「schedule」:「0 0-59 0-23 ?* *「'表示每分鐘運行一次。 將其更改爲「schedule」:「0 0 0?* *」'安排每天午夜運行一次 – mjalil