Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 向EC2实例上运行的ElasticSearch服务发送请求_Rest_Amazon Web Services_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Amazon Ec2 - Fatal编程技术网 elasticsearch,amazon-ec2,Rest,Amazon Web Services,elasticsearch,Amazon Ec2" /> elasticsearch,amazon-ec2,Rest,Amazon Web Services,elasticsearch,Amazon Ec2" />

Rest 向EC2实例上运行的ElasticSearch服务发送请求

Rest 向EC2实例上运行的ElasticSearch服务发送请求,rest,amazon-web-services,elasticsearch,amazon-ec2,Rest,Amazon Web Services,elasticsearch,Amazon Ec2,我是AWS和ElasticSearch的初学者,我正在尝试ElasticSearch,希望能更多地了解如何在生产中使用它。我知道AWS有自己的ElasticSearch产品,但我想启动自己的EC2实例,自己建立ElasticSearch,只是为了了解更多 我已经通过以下方法在我的EC2实例上启动并运行了ElasticSearch。我启动了ES服务并执行了一个curl命令: $ curl localhost:9200/_cluster/health?pretty 我得到了一个有效的答复: {

我是AWS和ElasticSearch的初学者,我正在尝试ElasticSearch,希望能更多地了解如何在生产中使用它。我知道AWS有自己的ElasticSearch产品,但我想启动自己的EC2实例,自己建立ElasticSearch,只是为了了解更多

我已经通过以下方法在我的EC2实例上启动并运行了ElasticSearch。我启动了ES服务并执行了一个curl命令:

$ curl localhost:9200/_cluster/health?pretty
我得到了一个有效的答复:

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
但是,我一直在尝试远程发送相同的请求,并且正在超时:

curl http://MY-EC2-INSTANCE-IP-ADDRESS:9200/_cluster/health?pretty

curl: (7) Failed to connect to XX.XX.XXX.XX port 9200: Operation timed out
当我创建EC2实例时,我确保在我的安全组中指定一个HTTP选项。我在下面附上了一个截图:

此外,我还进行了测试,以确保HTTP实际工作。我使用
服务httpd start
启动了自己的小Apache服务器,并在
/var/www/html
中放置了一个小的
index.html
文件,其中包含一个简单的

您好,这是一个弹性搜索

文本填充。当我访问EC2实例IP地址时,我得到了正确的index.html文本:

我知道AWS自己的ElasticSearch服务直接为用户提供端点,没有端口号(或者至少是默认端口号)。但令人惊讶的是,关于如何向远程ES服务发送请求的文档很少(例如,几乎所有这些服务都有
localhost:9200


向EC2实例上的ElasticSearch服务发送请求的正确协议是什么?

您还需要打开安全组中的端口9200。您的示例使用端口9200进行连接。

您还需要在安全组中打开端口9200。您的示例是使用端口9200进行连接。

我在浏览了几篇SO帖子后找到了答案,最终由Kimberly W在这篇文章中找到了解决方案。在my
elasticsearch.yml
中,编辑以下配置:

network:
  host: 0.0.0.0
http:
  port: 9200
然后,转到AWS安全组设置并编辑入站规则以包括:

这将允许到
9200
的传入连接


然后,重新启动ElasticSearch服务。关键问题是我正在ping正确的位置,但是如果没有人在监听端口9200,那么就没有人会响应

我在浏览了几篇SO帖子后找到了答案,最终金伯利W在这篇文章中找到了解决方案。在my
elasticsearch.yml
中,编辑以下配置:

network:
  host: 0.0.0.0
http:
  port: 9200
然后,转到AWS安全组设置并编辑入站规则以包括:

这将允许到
9200
的传入连接


然后,重新启动ElasticSearch服务。关键问题是我正在ping正确的位置,但是如果没有人在监听端口9200,那么就没有人会响应

谢谢。为什么我能够通过
localhost
连接到ElasticSearch服务,然后连接到端口9200而没有问题?Woops-nevermind。我把你的答案解释错了。您刚才说我需要将HTTP端口9200添加到入站安全组。谢谢。为什么我能够通过
localhost
连接到ElasticSearch服务,然后连接到端口9200而没有问题?Woops-nevermind。我把你的答案解释错了。你刚才说我需要将HTTP端口9200添加到入站安全组。我想你误解了一些事情。安全组是防火墙。当您通过ssh在实例内部时,您也在防火墙内部,因此可以自由访问
localhost
上的任何端口。安全组设置在此处无效。一旦离开安全组,您必须通过防火墙。现在真正重要的是端口号和TCP与UDP。在您的情况下,需要为端口9200添加“自定义TCP规则”。“HTTP”只是在端口80上指定TCP的快捷方式,不需要到达端口9200上的elasticsearch服务器,即使它也使用HTTP协议。谢谢。这是非常有帮助的。如果你继续写这篇文章作为回答,我可以接受他最全面、最好的解释。我想你误解了一些事情。安全组是防火墙。当您通过ssh在实例内部时,您也在防火墙内部,因此可以自由访问
localhost
上的任何端口。安全组设置在此处无效。一旦离开安全组,您必须通过防火墙。现在真正重要的是端口号和TCP与UDP。在您的情况下,需要为端口9200添加“自定义TCP规则”。“HTTP”只是在端口80上指定TCP的快捷方式,不需要到达端口9200上的elasticsearch服务器,即使它也使用HTTP协议。谢谢。这是非常有帮助的。如果你继续写这篇文章作为回答,我可以接受他最全面、最好的解释。