2015-05-22 9 views
7

मैं elasticsearch-js (नोडजेएस) के साथ काम कर रहा हूं और जब तक लोचदार खोज चल रहा है तब तक सब कुछ ठीक काम करता है। हालांकि, मैं जानना चाहता हूं कि क्लाइंट के तरीकों में से किसी एक को आह्वान करने का प्रयास करने से पहले मेरा कनेक्शन ज़िंदा है। मैं कुछ सिंक्रोनस फैशन में चीजें कर रहा हूं, लेकिन केवल प्रदर्शन परीक्षण के उद्देश्य के लिए (उदाहरण के लिए, जांच करें कि मेरे पास काम करने के लिए खाली इंडेक्स है, कुछ डेटा डालें, डेटा पूछें)। इस तरह एक टुकड़ा को देखते हुए:कैसे जांचें कि लोचदार खोज क्लाइंट कनेक्ट है या नहीं?

var elasticClient = new elasticsearch.Client({ 
     host: ((options.host || 'localhost') + ':' + (options.port || '9200')) 
    }); 
    // Note, I already have promise handling implemented, omitting it for brevity though 
    var promise = elasticClient.indices.delete({index: "_all"}); 
    /// ... 

वहाँ तेजी से विफल ग्राहक config पर में भेजने के लिए कुछ तंत्र है, या कुछ परीक्षण मैं ग्राहक पर प्रदर्शन कर सकते हैं यकीन है कि यह delete लागू करने से पहले खुला है बनाने के लिए?

अद्यतन: 2015-05-22
मुझे यकीन है कि अगर यह सही है नहीं कर रहा हूँ, लेकिन शायद ग्राहक आँकड़े प्राप्त करने का प्रयास उचित है?

var getStats = elasticClient.nodes.stats(); 
    getStats.then(function(o){ 
     console.log(o); 
    }) 
    .catch(function(e){ 
     console.log(e); 
     throw e; 
    }); 

वाया नोड डिबग, मैं वादा अस्वीकार कर देख रहा हूँ जब ElasticSearch नीचे/के साथ दुर्गम है: "Error: No Living connections"। जब यह कनेक्ट होता है, तो मेरे हैंडलर में o कनेक्शन स्थिति के बारे में विवरण लगता है। क्या यह दृष्टिकोण सही होगा या कनेक्शन व्यवहार्यता की जांच करने का कोई पसंदीदा तरीका होगा?

+1

यह एक [ज्ञात मुद्दा] (https://github.com/elastic/elasticsearch-js/issues/196) है जो अभी तक अनसुलझा है। – Val

उत्तर

13

आंकड़े प्राप्त करना आपके ग्राहक से जुड़ा हुआ सुनिश्चित करने के लिए भारी कॉल हो सकता है। आपको पिंग का उपयोग करना चाहिए, दूसरा उदाहरण देखें https://github.com/elastic/elasticsearch-js#examples

हम स्टार्ट अप पर elasticsearch-js क्लाइंट कनेक्शन को तुरंत चालू करने के बाद भी पिंग का उपयोग कर रहे हैं।

// example from above link 
var elasticsearch = require('elasticsearch'); 
var client = new elasticsearch.Client({ 
    host: 'localhost:9200', 
    log: 'trace' 
}); 

client.ping({ 
    // ping usually has a 3000ms timeout 
    requestTimeout: Infinity, 
    // undocumented params are appended to the query string 
    hello: "elasticsearch!" 
}, function (error) { 
    if (error) { 
    console.trace('elasticsearch cluster is down!'); 
    } else { 
    console.log('All is well'); 
    } 
}); 
+0

अद्भुत और विस्तृत उत्तर, बहुत बहुत धन्यवाद! – blong

संबंधित मुद्दे