2017-04-20 122 views
0

我正在嘗試編寫一個C++代碼片段來向elasticsearch服務器發佈POST。服務器上的IP 172.20.1.160運行,並使用curl在Elasticsearch教程中,我可以把數據,如:如何使用boost asio連接到elasticsearch?

curl -XPUT 'localhost:9200/twitter/tweet/1?op_type=create&pretty' -H 'Content-Type: application/json' -d' 

{ 「用戶」: 「kimchy」, 「POST_DATE」:「2009-11 -15T14:12:12" , 「消息」: 「嘗試Elasticsearch」 } '

但是當我嘗試做升壓ASIO類似的東西,我的連接顯然拒絕。

這裏是展示我如何努力創建連接最小的可編譯代碼,併產生錯誤:

/// Compiled with: 
///  g++ --std=c++14 foo.cpp -lboost_system -lpthread 
#include <boost/asio.hpp> 

constexpr const char *carbon_port = "2003"; 
constexpr const char *ES_port  = "9200"; 
constexpr const char *server_ip  = "172.20.1.160"; 


int main() 
{ 
    boost::asio::io_service io_service; 
    boost::asio::ip::tcp::resolver resolver(io_service); 
    boost::asio::ip::tcp::resolver::query query(server_ip, ES_port); 
    auto endpoint = *resolver.resolve(query); 
    boost::asio::ip::tcp::socket socket (io_service); 
    socket.connect(endpoint); 
} 

對於它的價值,我也有同樣的機器上運行的碳石墨服務器,我可以連接,並通過純文本協議有發送數據,但我無法作出一個套接字連接elasticsearch,我得到異常:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >' 
    what(): connect: Connection refused 

可有人開導我什麼,我需要知道獲得這工作?

+0

是從相同的IP發送的請求? – Satya

+0

是的。這很重要嗎? – Spacemoose

+0

你可以嘗試使用本地主機代替IP,只需一分錢 – Satya

回答

0

默認elasticsearch本地主機而已,如果你想它來聽的所有端口,在config/elasticsearch.yml添加行network.host: 0.0.0.0並重新啓動elasticsearch。

+0

嗯,非常感謝,我顯然錯過了這一點。 – Spacemoose

+0

]我們都知道:) – Satya