2015-05-22 24 views
7

Tôi đang làm việc với elasticsearch-js (NodeJS) và mọi thứ chỉ hoạt động tốt miễn là ElasticSearch đang chạy. Tuy nhiên, tôi muốn biết rằng kết nối của tôi vẫn còn hoạt động trước khi thử gọi một trong các phương thức của máy khách. Tôi đang làm việc theo một chút thời trang đồng bộ, nhưng chỉ với mục đích kiểm tra hiệu suất (ví dụ: kiểm tra xem tôi có chỉ mục trống để làm việc, nhập dữ liệu, truy vấn dữ liệu). Nhìn vào một đoạn như thế này:Làm thế nào để kiểm tra xem máy khách ElasticSearch có được kết nối không?

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"}); 
    /// ... 

Có một số cơ chế để gửi ở trên cấu hình client thất bại nhanh chóng, hoặc một số bài kiểm tra tôi có thể thực hiện trên máy khách để chắc chắn rằng nó đang mở trước khi gọi delete?

Cập nhật: 2015-05-22
Tôi không chắc chắn nếu điều này là đúng, nhưng có lẽ cố gắng để có được số liệu thống kê khách hàng là hợp lý?

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

Qua gỡ lỗi nút, tôi thấy lời hứa bị từ chối khi Tìm kiếm đàn hồi không truy cập được: "Error: No Living connections". Khi nó kết nối, o trong trình xử lý sau đó của tôi dường như có thông tin chi tiết về trạng thái kết nối. Cách tiếp cận này có chính xác không hoặc có cách nào ưu tiên để kiểm tra khả năng kết nối không?

+1

Đây là [vấn đề đã biết] (https://github.com/elastic/elasticsearch-js/issues/196) chưa được giải quyết. – Val

Trả lời

13

Lấy số liệu thống kê có thể là một cuộc gọi nặng chỉ để đảm bảo khách hàng của bạn được kết nối. Bạn nên sử dụng ping, xem ví dụ thứ 2 https://github.com/elastic/elasticsearch-js#examples

Chúng tôi cũng đang sử dụng ping, sau khi khởi tạo kết nối máy khách elasticsearch-js khi khởi động.

// 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

Câu trả lời tuyệt vời và chi tiết, cảm ơn rất nhiều! – blong

Các vấn đề liên quan