Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> डेटाबेस

Logstash के साथ CSV डेटा को Elasticsearch में आसानी से आयात करें

मूल रूप से 10 सितंबर, 2015 को ObjectRocket.com/blog पर प्रकाशित

क्या आपके पास एक बिल्कुल नया Elasticsearch® इंस्टेंस है, लेकिन आपका सारा उपयोगी डेटा जिसे आप खोजना चाहते हैं, एक CSV फ़ाइल में रहता है? कोई बात नहीं। Logstash® लगभग किसी भी डेटा को Elasticsearch इंडेक्स में आसानी से खोजने योग्य चीज़ में बदल देता है।

Logstash के साथ CSV डेटा को Elasticsearch में आसानी से आयात करें

शुरू करने के लिए, आपको कुछ डेटा और इन उदाहरणों का उपयोग करने के लिए Unix® के समान एक वातावरण चाहिए। कुछ मामूली समायोजन के साथ Windows® ठीक काम करता है। इस मामले में, हम अपने Davis Vantage Pro2® वेदर स्टेशन से डेटा का निर्यात लेना चाहते थे, .CSV प्रारूप में, और इसके साथ एक नया इंडेक्स बनाना चाहते थे।

हम कुछ मिलियन लाइनों से शुरू करते थे जो इनके समान थीं, एक स्थानीय फ़ाइल में संग्रहीत:

$ head -3 /home/erik/weather.csv HumOut,TempIn,DewPoint,HumIn,WindDir,RainMonth,WindSpeed,RainDay,BatteryVolts,WindChill,Pressure,time,TempOut,WindSpeed10Min,RainRate 76,78.0,78.227017302825,44,109,2.0,2,0.0,1.236328125,90.87261657090625,29.543,2015-06-18T17:49:29Z,86.5,1,0.0 76,78.0,78.227017302825,44,107,2.0,2,0.0,1.236328125,90.87261657090625,29.543,2015-06-18T17:49:45Z,86.5,1,0.0 76,78.0,78.32406784157725,44,107,2.0,0,0.0,1.236328125,90.83340000000001,29.543,2015-06-18T17:50:00Z,86.59999999999999,1,0.0 

नोट: इस प्रयोग के काम करने के लिए, आपके पास कम से कम एक डेटा स्रोत होना चाहिए।

डेटा होने के बाद, आप शुरू कर सकते हैं। सबसे पहले, सुनिश्चित करें कि Java का एक संस्करण इंस्टॉल है:

$ java -version openjdk version "1.8.0_51" 

कोई भी Java Virtual Machine (JVM) इसके लिए ठीक है—OpenJDK®, Oracle®, और इसी तरह।

$ curl -O https://download.elastic.co/logstash/logstash/logstash-1.5.4.tar.gz $ tar xfz logstash-1.5.4.tar.gz $ cd logstash-1.5.4 $ mkdir conf 

अब, एक कॉन्फिगरेशन फ़ाइल बनाने का समय है।

सबसे पहले, एक input सेक्शन परिभाषित करें जहां आप Logstash को बताते हैं कि डेटा कहां ढूंढना है:

input { file { path => "/home/erik/weather.csv" start_position => beginning } } 

यह सिर्फ Logstash को बताता है कि कहां देखना है और हम फ़ाइल की शुरुआत से लोड करना चाहते हैं। अगला, हमें एक फ़िल्टर चाहिए—Logstash में डिफ़ॉल्ट रूप से बहुत सारे फ़िल्टर प्लगइन्स उपलब्ध हैं। यह उदाहरण डेटा को पार्स करने के लिए एक जोड़े का उपयोग करता है। अभी तक, Logstash को फ़ाइल में डेटा के बारे में कुछ नहीं पता—आपको प्रारूप और विभिन्न फ़ील्ड को कैसे संभालना है, इस पर किसी भी अन्य विशिष्टता को निर्दिष्ट करने की आवश्यकता है:

filter { csv { columns => [ "HumOut", "TempIn", "DewPoint", "HumIn", "WindDir", "RainMonth", "WindSpeed", "RainDay", "BatteryVolts", "WindChill", "Pressure", "time", "TempOut", "WindSpeed10Min", "RainRate" ] separator => "," remove_field => ["message"] } date { match => ["time", "ISO8601"] } mutate { convert => ["TempOut", "float"] } } 

कॉलम स्व-व्याख्यात्मक हैं, लेकिन यहां अधिक विवरण है। सबसे पहले, उदाहरण message फ़ील्ड को हटा देता है, जिसमें पूरी पंक्ति होती है। आपको इसकी आवश्यकता नहीं होगी क्योंकि आप विशिष्ट विशेषताओं की खोज कर रहे हैं। दूसरा, यह निर्दिष्ट करता है कि time फ़ील्ड में एक ISO8601-फॉर्मेटेड डेट है ताकि Elasticsearch को पता चले कि यह एक साधारण स्ट्रिंग नहीं है। अंत में, यह TempOut मान को फ्लोटिंग-पॉइंट नंबर में बदलने के लिए mutate फ़ंक्शन का उपयोग करता है।

अब, डेटा को इनजेस्ट करने और Elasticsearch में संग्रहीत करने के बाद इसे पार्स करने के लिए निम्न कोड का उपयोग करें:

output { elasticsearch { protocol => "https" host => ["iad1-20999-0.es.objectrocket.com:20999"] user => "erik" password => "mysupersecretpassword" action => "index" index => "eriks_weather_index" } stdout { } } 

अंत में, अपना होस्ट और पोर्ट, ऑथेंटिकेशन डेटा, और स्टोर करने के लिए इंडेक्स का नाम कॉन्फिगर करें।

ठीक है, चलो इसे शुरू करते हैं। अगर यह काम कर रहा है, तो यह इस तरह दिखना चाहिए:

$ bin/logstash -f conf/logstash.conf -v Logstash startup completed 

क्या यह काम किया? Elasticsearch से पूछें:

$ curl -u erik:mysupersecretpassword 'https://iad1-20999-0.es.objectrocket.com:20999/_cat/indices?v' health status index pri rep docs.count store.size pri.store.size green open eriks_weather_index 5 1 294854 95.8mb 48.5mb 

दस्तावेज़ वहां हैं, तो एक के लिए क्वेरी करें:

$ curl -u erik:mysupersecretpassword 'https://iad1-20999-0.es.objectrocket.com:20999/eriks_weather_index/_search?q=TempOut:>75&pretty&terminate_after=1' 

यह Elasticsearch को TempOut 75 से अधिक (Tempout:>75) वाले दस्तावेज़ खोजने के लिए कहता है, इसे मानव उपभोग के लिए प्रारूपित करता है (pretty), और प्रति शार्ड एक से अधिक परिणाम नहीं लौटाता (terminate_after=1)। यह ऐसा कुछ लौटाना चाहिए:

{ "took" : 4, "timed_out" : false, "terminated_early" : true, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 5, "max_score" : 1.0, "hits" : [ { "_index" : "eriks_weather_index", "_type" : "logs", "_id" : "AU-yXZJIJb3HnhKvpdNC", "_score" : 1.0, "_source" :{ "@version":"1","@timestamp":"2015-06-22T10:24:23.000Z","host":"kibana","path":"/home/erik/weather.csv","HumOut":"86","TempIn":"79.7","DewPoint":"70.65179649787358","HumIn":"46","WindDir":"161","RainMonth":"2.7","WindSpeed":"0","RainDay":"0.36","BatteryVolts":"1.125","WindChill":"82.41464999999999","Pressure":"29.611","time":"2015-06-22T10:24:23Z","TempOut":75.1,"WindSpeed10Min":"0","RainRate":"0.0"} } ] } } 

सफलता। Logstash आपके पास पड़े किसी भी डेटा को Elasticsearch में आसानी से चलाने योग्य चीज़ में बदलने के लिए एक बेहतरीन स्विस आर्मी नाइफ है, तो मज़े करें!

www.rackspace.com पर जाएं और बातचीत शुरू करने के लिए सेल्स चैट पर क्लिक करें। टिप्पणी करने या प्रश्न पूछने के लिए फीडबैक टैब का उपयोग करें।

Rackspace Cloud की सेवा शर्तें देखने के लिए यहां क्लिक करें।


  1. ट्रांसपेरेंट डेटा एन्क्रिप्शन (TDE) के साथ अपने Oracle डेटाबेस को मजबूत करें ट्रांसपेरेंट डेटा एन्क्रिप्शन (TDE) के साथ अपने Oracle डेटाबेस को मजबूत करें

    यह ब्लॉग Oracle® डेटाबेस के भीतर संवेदनशील डेटा को सुरक्षित करने के लिए उन्नत सुरक्षा विकल्प का उपयोग करने के आवश्यक तत्वों को कवर करता है, जिसमें ट्रांसपेरेंट डेटा एन्क्रिप्शन (TDE) का उपयोग किया जाता है। यह सुविधा आपको डेटाबेस कॉलम को एन्क्रिप्ट करने और एन्क्रिप्शन कुंजियों को प्रबंधित करने में सक

  1. Elasticsearch in Action: 5 सिद्ध उपयोग के मामले Elasticsearch in Action: 5 सिद्ध उपयोग के मामले

    परिचय मूल रूप से 16 मई, 2017 को ObjectRocket.com/blog पर प्रकाशित। आप जानते हैं, खोज के लिए के अलावा, Elasticsearch® के उपयोग समय के साथ बढ़ते और बदलते रहते हैं। ObjectRocket पर, हमने कुछ समय के लिए अपने प्लेटफॉर्म पर होस्टेड Elasticsearch की पेशकश की है। हम अपने ग्राहकों के बीच स्पष्ट रुझान देखते ह

  1. Filebeat और Elasticsearch इंजेस्ट पाइपलाइन्स के साथ CSV फाइलों को सहजता से पार्स करें Filebeat और Elasticsearch इंजेस्ट पाइपलाइन्स के साथ CSV फाइलों को सहजता से पार्स करें

    Elasticsearch 5 में सबसे अच्छी नई सुविधाओं में से एक इंजेस्ट नोड है, जो Elasticsearch क्लस्टर में कुछ Logstash-शैली प्रोसेसिंग जोड़ता है, ताकि डेटा को इंडेक्स करने से पहले किसी अन्य सर्विस और/या इंफ्रास्ट्रक्चर की आवश्यकता के बिना ट्रांसफॉर्म किया जा सके। थोड़ी देर पहले, हमने Logstash के साथ CSV फाइ