2017-04-20 103 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

相关问题