चूंकि यह प्रश्न पूछा गया है, पैरामीटर बहुत बदल गए हैं, वर्जनिंग और डाइजेस्टिंग को बहिष्कृत कर दिया गया है, और मतदान को शेड्यूल से बदल दिया गया है, जो नदी को कितनी बार फिर से चलाने के लिए क्रॉन अभिव्यक्ति लेगा (नीचे हर 5 मिनट में चलने के लिए निर्धारित है )
curl -XPUT 'localhost:9200/_river/account_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "test_user",
"password" : "test_pass",
"sql" : "SELECT `account`.`id` as `_id`, `account`.`id`, `account`.`reference`, `account`.`company_name`, `account`.`also_known_as` from `account` WHERE NOT `account`.`deleted`",
"strategy" : "simple",
"schedule": "0 0/5 * * * ?" ,
"autocommit" : true,
"index" : "headphones",
"type" : "Account"
}
}'
लेकिन मुख्य प्रश्न के लिए, मुझे डेवलपर से जो उत्तर मिला, वह यह हैhttps://github.com/jprante/elasticsearch-river-jdbc/issues/213
मैंने वर्जनिंग के साथ हाउसकीपिंग की कोशिश की, लेकिन यह वृद्धिशील अपडेट और पंक्तियों को जोड़ने के साथ अच्छी तरह से काम नहीं किया।
एक अच्छी विधि विंडो इंडेक्सिंग होगी। प्रत्येक समय सीमा (शायद प्रति दिन या प्रति सप्ताह एक बार) नदी के लिए एक नया सूचकांक बनाया जाता है, और एक उपनाम में जोड़ा जाता है। पुराने सूचकांकों को थोड़ी देर बाद गिराना है। यह रखरखाव लॉगस्टैश अनुक्रमण के समान है, लेकिन यह नदी के दायरे से बाहर है।
जिस विधि का मैं वर्तमान में I अनुसंधान अलियासिंग के रूप में उपयोग कर रहा हूं, वह यह है कि मैं रात में सूचकांक और नदी को फिर से बनाता हूं, और नदी को हर कुछ घंटों में चलाने के लिए शेड्यूल करता हूं। यह सुनिश्चित करता है कि डाला जा रहा नया डेटा उस दिन अनुक्रमित किया जाएगा, और हटाना हर 24 घंटे में दिखाई देगा