我正在嘗試編寫一個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
可有人開導我什麼,我需要知道獲得這工作?
是從相同的IP發送的請求? – Satya
是的。這很重要嗎? – Spacemoose
你可以嘗試使用本地主機代替IP,只需一分錢 – Satya