我有一个EC2服务器上运行的elasticsearch集群。尝试连接时,会收到各种不同的错误消息。
当前,在elasticsearch.yml文件中,所有运输项目都已被注释掉,但是我已经尝试过:
network.host: 0.0.0.0
and
network.host: ec2-xx-xxx-xxx.aws.instance.com
在我的烧瓶应用程序中,代码如下:
from datetime import datetime
from flask import Flask, jsonify, request
from elasticsearch import Elasticsearch
#es = Elasticsearch()http://34.245.51.240/
es = Elasticsearch(['ec2-34-xxx-xx-240.eu-west-1.compute.amazonaws.com','9200'])
#es = Elasticsearch(['34.245.51.240','9200'])
application = Flask(__name__)
@application.route('/', methods=['GET'])
def index():
#results = es.get(index='contents', doc_type='title', id='my-new-slug')
#return jsonify(results['_source'])
doc = {
'author': 'kimchy',
'text': 'Elasticsearch: cool. bonsai cool.',
'timestamp': datetime.now(),
}
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc)
print(res['res'])
return res
#application.run(port=5000, debug=True)
if __name__ == '__main__':
application.debug = True
application.run()
我已经用Google搜索过多次,并尝试了所有可能找到的配置。
实现此目标的正确方法是什么?
谢谢。
答案 0 :(得分:0)
我希望这会对其他人有所帮助。
elasticsearch的默认端口为9200,因此有必要在EC2服务器上打开这样的端口:
CustomTCP TCP 9200 0.0.0.0
这可以通过编辑设置服务器时设置安全组的安全组向导来完成。
然后在您的Python应用程序中,连接字符串为:
es = Elasticsearch("http://00.111.222.33") //the public IP you can see on your EC2 dashboard
就是这样。数小时的痛苦和如此简单。