我正在尝试编写一个 C++ 片段来对弹性搜索服务器进行 POST。服务器在 ip 172.20.1.160 上运行,我可以使用 curl 输入数据,就像在 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”}'
但是当我尝试用 boost 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
有人能告诉我我需要知道什么才能让这个工作吗?