2016-03-05 7 views
12

के साथ सिंक PostgreSQL डेटा अंत में मैं PostgreSQL में डेटा के लिए एक स्केलेबल खोज समाधान करना चाहते हैं। मेरे खोज मुझे Logstash का उपयोग कर ElasticSearch को Postgres से लिखने की घटनाओं जहाज के लिए की ओर इशारा है, तथापि मैं एक प्रयोग करने योग्य समाधान नहीं मिली है। soluions मैं पाया है एक अंतराल पर Postgres से सभी डेटा क्वेरी करने के लिए JDBC-इनपुट का उपयोग शामिल है, और हटाने की घटनाओं पर कब्जा कर लिया नहीं कर रहे हैं।ElasticSearch

मुझे लगता है कि यह एक आम उपयोग के मामले इसलिए मुझे आशा है कि आप लोग मेरे साथ अपने अनुभव को साझा कर सकता है, या मुझे कुछ संकेत आगे बढ़ने के लिए देना है।

+1

यह उत्तर मदद कर सकता है (अंत में जहां मैं गो/पायथन बिनलॉग समाधान का उल्लेख करता हूं): http://stackoverflow.com/questions/34477095/elasticsearch-replication-of-other-system-data/34477639#34477639 – Val

+0

सूचक के लिए धन्यवाद वैल्यू। मैंने यह प्रश्न पूछने से पहले पोस्ट पाया। हालांकि मुझे लगता है कि अब मैं इनपुट-जेडीबीसी का उपयोग कर सकता हूं और हटाए गए डेटा को संभालने के लिए थोड़ा अतिरिक्त काम कर सकता हूं। क्या आप जानते हैं कि पोस्टग्रेज़ से ईवेंट कैप्चर करने के लिए लॉगस्टैश कैसे सेट करें? – Khanetor

+0

उम ... मुझे लगता है कि DELETE समस्या के आसपास काम करने के लिए, मैं कभी भी अपने मुख्य डेटाबेस में कोई रिकॉर्ड नहीं हटाऊंगा, और रिकॉर्ड्स को 'हटाए गए' के ​​रूप में चिह्नित करता हूं, और यह लोचदार खोज में दिखाई देगा। जब मैं सामान को हटाने की तरह महसूस करता हूं, तो मैंने हटाए गए चिह्न के साथ सब कुछ हटाने के लिए मुख्य डेटाबेस और ES दोनों में हटाने के लिए शेड्यूल सेट किया है। – Khanetor

उत्तर

10

आप भी हटाता है पर अधिसूचित और Elasticsearch में संबंधित अभिलेख को नष्ट किए जाने की जरूरत है, यह है कि Logstash JDBC इनपुट में मदद नहीं करेगा सच है। आपको suggested here

के रूप में बिनलॉग के आसपास काम करने वाले समाधान का उपयोग करना होगा, हालांकि, यदि आप अभी भी लॉगस्टैश जेडीबीसी इनपुट का उपयोग करना चाहते हैं, तो आप पोस्टग्रेएसक्यूएल में केवल सॉफ्ट-डिलीट रिकॉर्ड्स का उपयोग करना चाहते हैं, यानी एक नया बुलेन कॉलम बनाएं अपने रिकॉर्ड को deleted के रूप में चिह्नित करने के लिए। एक ही झंडा तो Elasticsearch में मौजूद होता है और आप deleted मैदान पर एक सरल term क्वेरी के साथ अपनी खोजों से बहिष्कृत कर सकते हैं।

जब भी आपको कुछ क्लीनअप करने की आवश्यकता होती है, तो आप PostgreSQL और Elasticsearch दोनों में deleted ध्वजांकित सभी रिकॉर्ड हटा सकते हैं।