mysql - ElasticSearch के साथ एकीकृत करने के लिए कैसे




logstash elasticsearch-plugin (4)

ES 5.x के रूप में, उन्होंने इस सुविधा को बॉक्स के बाहर logstash प्लगइन के साथ logstash

यह समय-समय पर डेटाबेस से डेटा आयात करेगा और ईएस सर्वर को धक्का देगा।

एक को नीचे दी गई एक साधारण आयात फ़ाइल बनानी होगी (जिसे here भी वर्णित किया गया here ) और स्क्रिप्ट चलाने के लिए लॉगस्टैश का उपयोग करें। लॉगस्टैश एक शेड्यूल पर इस स्क्रिप्ट को चलाने का समर्थन करता है।

# file: contacts-index-logstash.conf
input {
    jdbc {
        jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
        jdbc_user => "user"
        jdbc_password => "pswd"
        schedule => "* * * * *"
        jdbc_validate_connection => true
        jdbc_driver_library => "/path/to/latest/mysql-connector-java-jar"
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        statement => "SELECT * from contacts where updatedAt > :sql_last_value"
    }
}
output {
    elasticsearch {
        protocol => http
        index => "contacts"
        document_type => "contact"
        document_id => "%{id}"
        host => "ES_NODE_HOST"
    }
}
# "* * * * *" -> run every minute
# sql_last_value is a built in parameter whose value is set to Thursday, 1 January 1970,
# or 0 if use_column_value is true and tracking_column is set

आप here से maven से mysql जार डाउनलोड कर सकते here

यदि अनुक्रमणिका इस स्क्रिप्ट के निष्पादित होने पर ES में मौजूद नहीं है, तो वे स्वचालित रूप से बनाए जाएंगे। जैसे एक सामान्य पोस्ट कॉल के लिए इलास्टिसर्च

अपने एक प्रोजेक्ट में मैं mysql के साथ ElasticSearch का उपयोग करने की योजना बना रहा हूं। मैंने ElasticSearch सफलतापूर्वक स्थापित किया है। मैं ईएस में इंडेक्स को अलग से प्रबंधित करने में सक्षम हूं। लेकिन मुझे नहीं पता कि mysql के साथ समान कैसे लागू किया जाए।

मैंने कुछ दस्तावेज़ों को पढ़ा है लेकिन मैं थोड़ा भ्रमित हूं और स्पष्ट विचार नहीं कर रहा हूं। क्या कोई मेरी मदद कर सकता हैं?

अग्रिम में धन्यवाद।


अंत में मैं जवाब खोजने में सक्षम था। मेरे निष्कर्ष साझा करना।

माईसकल के साथ इलास्टिक खोज का उपयोग करने के लिए आपको जावा डेटाबेस कनेक्शन ( JDBC ) आयातक की आवश्यकता होगी। JDBC ड्राइवरों के साथ आप अपने mysql डेटा को elasticsearch में सिंक कर सकते हैं।

मैं ubuntu 14.04 LTS का उपयोग कर रहा हूं और आपको elasticsearch चलाने के लिए Java8 स्थापित करना होगा क्योंकि यह जावा में लिखा है

निम्नलिखित ElasticSearch 2.2.0 और ElasticSearch-jdbc 2.2.0 को स्थापित करने के लिए निम्नलिखित चरण हैं और कृपया दोनों संस्करणों को एक ही नोट करें

Java8 स्थापित करने के बाद ..... elasticsearch 2.2.0 स्थापित करें

# cd /opt

# wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.2.0/elasticsearch-2.2.0.deb

# sudo dpkg -i elasticsearch-2.2.0.deb

यह इंस्टॉलेशन प्रक्रिया एलिस्टिक्स खोज को / usr / share / elasticsearch में स्थापित करेगी / जिसकी विन्यास फाइल / etc / elasticsearch में रखी जाएगी।

अब आपको विन्यास फाइल में कुछ बुनियादी विन्यास करने देता है। यहाँ /etc/elasticsearch/elasticsearch.yml हमारी कॉन्फ़िग फ़ाइल है जिसे आप बदलने के लिए फ़ाइल खोल सकते हैं

nano /etc/elasticsearch/elasticsearch.yml

और क्लस्टर नाम और नोड नाम बदलें

उदाहरण के लिए :

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
 cluster.name: servercluster
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
 node.name: vps.server.com
#
# Add custom attributes to the node:
#
# node.rack: r1

अब फाइल को सेव करें और इलास्टिसर्च शुरू करें

 /etc/init.d/elasticsearch start

ES का परीक्षण करने के लिए स्थापित किया गया है या नहीं चल रहा है

 curl -XGET 'http://localhost:9200/?pretty'

यदि आप अनुसरण करते हैं तो आपकी इलास्टिक्स खोज अभी स्थापित है :)

{
  "name" : "vps.server.com",
  "cluster_name" : "servercluster",
  "version" : {
    "number" : "2.2.0",
    "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
    "build_timestamp" : "2016-01-27T13:32:39Z",
    "build_snapshot" : false,
    "lucene_version" : "5.4.1"
  },
  "tagline" : "You Know, for Search"
}

अब हम elasticsearch-JDBC स्थापित करते हैं

इसे http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.3.1/elasticsearch-jdbc-2.3.3.1-dist.zip से डाउनलोड करें और / etc / elasticsearch / में एक ही निकालें। और "लॉग" फ़ोल्डर भी वहां बनाएं (लॉग का रास्ता / etc / elasticsearch / लॉग होना चाहिए)

मेरे पास mysql में एक डेटाबेस है, जिसका नाम " ElasticSearchDatabase " है और उस क्षेत्र के अंदर फ़ील्ड आईडी, नाम और ईमेल के साथ "परीक्षण" नाम दिया गया है।

cd /etc/elasticsearch

और निम्नलिखित चलाएं

echo '{
"type":"jdbc",
"jdbc":{

"url":"jdbc:mysql://localhost:3306/ElasticSearchDatabase",
"user":"root",
"password":"",
"sql":"SELECT id as _id, id, name,email FROM test",
"index":"users",
"type":"users",
"autocommit":"true",
"metrics": {
            "enabled" : true
        },
        "elasticsearch" : {
             "cluster" : "servercluster",
             "host" : "localhost",
             "port" : 9300 
        } 
}
}' | java -cp "/etc/elasticsearch/elasticsearch-jdbc-2.2.0.0/lib/*" -"Dlog4j.configurationFile=file:////etc/elasticsearch/elasticsearch-jdbc-2.2.0.0/bin/log4j2.xml" "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter"

अब जांचें कि क्या ES में आयातित mysql डेटा है या नहीं

curl -XGET http://localhost:9200/users/_search/?pretty

यदि सब ठीक हो जाता है, तो आप अपने सभी mysql डेटा को json फॉर्मेट में देख पाएंगे और यदि कोई त्रुटि है तो आप उन्हें /etc/elasticsearch/logs/jdbc.log फ़ाइल में देख पाएंगे

सावधान :

ES के पुराने संस्करणों में ... प्लगइन Elasticsearch-river-jdbc का उपयोग किया गया था जो नवीनतम संस्करण में पूरी तरह से पदावनत है इसलिए इसका उपयोग न करें।

मुझे आशा है कि मैं आपका समय बचा सकता हूं :)

किसी भी आगे के विचारों की सराहना की है

संदर्भ url: https://github.com/jprante/elasticsearch-jdbc


इसे और सरल बनाने के लिए, मैंने माईक को सेटअप के लिए MySQL को Elasticsearch के साथ बनाया है। मेरी कक्षा का उपयोग करके आप अपने MySQL डेटा को इलास्टिक्स खोज में सिंक कर सकते हैं और पूर्ण-पाठ खोज भी कर सकते हैं। आपको बस अपनी SQL क्वेरी सेट करने की आवश्यकता है और क्लास आपके लिए बाकी काम करेगी।


लॉगस्टैश JDBC प्लगइन काम करेगा:

input {
  jdbc { 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/testdb"
    jdbc_user => "root"
    jdbc_password => "factweavers"
    # The path to our downloaded jdbc driver
    jdbc_driver_library => "/home/comp/Downloads/mysql-connector-java-5.1.38.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # our query
    schedule => "* * * *"
    statement => "SELECT" * FROM testtable where Date > :sql_last_value order by Date"
    use_column_value => true
    tracking_column => Date
}

output {
  stdout { codec => json_lines }
  elasticsearch {
  "hosts" => "localhost:9200"
  "index" => "test-migrate"
  "document_type" => "data"
  "document_id" => "%{personid}"
  }
}






elasticsearch-5