2016-07-22 14 views
2

AWSでホストされているElasticsearchインスタンスがあります。私はカールと私の端末から接続することができます。私は今python elasticsearchラッパーを使用しようとしています。Pythonを使用したAWS Elasticsearchインスタンスへの接続

from elasticsearch import Elasticsearch 

client = Elasticsearch(host='https://ec2-xx-xx-xxx-xxx.us-west-2.compute.amazonaws.com', port=9200) 

をし、クエリは次のとおりです:私が持っている

data = client.search(index="mynewindex", body={"query": {"match": {"email": "gmail"}}}) 
    for hit in data: 
     print(hit.email) 
    print data 

フルトレースバック、Herokuのから、次のとおりです。

2016-07-22T14:06:06.031347+00:00 heroku[router]: at=info method=GET path="/" host=elastictest.herokuapp.com request_id=9a96d447-fe02-4670-bafe-efba842927f3 fwd="88.106.66.168" dyno=web.1 connect=1ms service=393ms status=500 bytes=456 
2016-07-22T14:09:18.035805+00:00 heroku[slug-compiler]: Slug compilation started 
2016-07-22T14:09:18.035810+00:00 heroku[slug-compiler]: Slug compilation finished 
2016-07-22T14:09:18.147278+00:00 heroku[web.1]: Restarting 
2016-07-22T14:09:18.147920+00:00 heroku[web.1]: State changed from up to starting 
2016-07-22T14:09:20.838784+00:00 heroku[web.1]: Starting process with command `gunicorn application:application --log-file=-` 
2016-07-22T14:09:20.834521+00:00 heroku[web.1]: Stopping all processes with SIGTERM 
2016-07-22T14:09:17.850918+00:00 heroku[api]: Deploy b7187d3 by hec[email protected] 
2016-07-22T14:09:17.850993+00:00 heroku[api]: Release v21 created by [email protected] 
2016-07-22T14:09:21.372589+00:00 app[web.1]: [2016-07-22 14:09:21 +0000] [3] [INFO] Handling signal: term 
2016-07-22T14:09:21.383946+00:00 app[web.1]: [2016-07-22 14:09:21 +0000] [3] [INFO] Shutting down: Master 
2016-07-22T14:09:21.367656+00:00 app[web.1]: [2016-07-22 14:09:21 +0000] [9] [INFO] Worker exiting (pid: 9) 
2016-07-22T14:09:21.366309+00:00 app[web.1]: [2016-07-22 14:09:21 +0000] [10] [INFO] Worker exiting (pid: 10) 
2016-07-22T14:09:22.286766+00:00 heroku[web.1]: Process exited with status 0 
2016-07-22T14:09:23.344822+00:00 app[web.1]: [2016-07-22 14:09:23 +0000] [3] [INFO] Starting gunicorn 19.6.0 
2016-07-22T14:09:23.345481+00:00 app[web.1]: [2016-07-22 14:09:23 +0000] [3] [INFO] Using worker: sync 
2016-07-22T14:09:23.351173+00:00 app[web.1]: [2016-07-22 14:09:23 +0000] [9] [INFO] Booting worker with pid: 9 
2016-07-22T14:09:23.370580+00:00 app[web.1]: [2016-07-22 14:09:23 +0000] [10] [INFO] Booting worker with pid: 10 
2016-07-22T14:09:23.345376+00:00 app[web.1]: [2016-07-22 14:09:23 +0000] [3] [INFO] Listening at: http://0.0.0.0:59867 (3) 
2016-07-22T14:09:24.536725+00:00 heroku[web.1]: State changed from starting to up 
2016-07-22T14:09:39.043240+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception 
2016-07-22T14:09:39.043239+00:00 app[web.1]:  rv = self.handle_user_exception(e) 
2016-07-22T14:09:39.043241+00:00 app[web.1]:  reraise(exc_type, exc_value, tb) 
2016-07-22T14:09:39.043233+00:00 app[web.1]: Traceback (most recent call last): 
2016-07-22T14:09:39.043238+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request 
2016-07-22T14:09:39.043236+00:00 app[web.1]:  response = self.full_dispatch_request() 
2016-07-22T14:09:39.043235+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app 
2016-07-22T14:09:39.043214+00:00 app[web.1]: [2016-07-22 14:09:39,041] ERROR in app: Exception on/[GET] 
2016-07-22T14:09:39.043241+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request 
2016-07-22T14:09:39.043242+00:00 app[web.1]:  rv = self.dispatch_request() 
2016-07-22T14:09:39.043242+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request 
2016-07-22T14:09:39.043243+00:00 app[web.1]:  return self.view_functions[rule.endpoint](**req.view_args) 
2016-07-22T14:09:39.043243+00:00 app[web.1]: File "/app/application.py", line 23, in index 
2016-07-22T14:09:39.043246+00:00 app[web.1]:  return func(*args, params=params, **kwargs) 
2016-07-22T14:09:39.043245+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 69, in _wrapped 
2016-07-22T14:09:39.043246+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 548, in search 
2016-07-22T14:09:39.043247+00:00 app[web.1]:  doc_type, '_search'), params=params, body=body) 
2016-07-22T14:09:39.043250+00:00 app[web.1]:  status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout) 
2016-07-22T14:09:39.043250+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 105, in perform_request 
2016-07-22T14:09:39.043244+00:00 app[web.1]:  data = client.search(index="mynewindex", body={"query": {"match": {"email": "gmail"}}}) 
2016-07-22T14:09:39.043251+00:00 app[web.1]:  raise ConnectionError('N/A', str(e), e) 
2016-07-22T14:09:39.043249+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/transport.py", line 329, in perform_request 
2016-07-22T14:09:39.043253+00:00 app[web.1]: ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x7f185a94d8d0>: Failed to establish a new connection: [Errno -2] Name or service not known) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7f185a94d8d0>: Failed to establish a new connection: [Errno -2] Name or service not known) 
2016-07-22T14:09:42.692817+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request 
2016-07-22T14:09:42.692816+00:00 app[web.1]:  response = self.full_dispatch_request() 
2016-07-22T14:09:42.692795+00:00 app[web.1]: [2016-07-22 14:09:42,691] ERROR in app: Exception on/[GET] 
2016-07-22T14:09:42.692820+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request 
2016-07-22T14:09:42.692819+00:00 app[web.1]:  reraise(exc_type, exc_value, tb) 
2016-07-22T14:09:42.692819+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception 
2016-07-22T14:09:42.692827+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/transport.py", line 329, in perform_request 
2016-07-22T14:09:42.692828+00:00 app[web.1]:  status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout) 
2016-07-22T14:09:42.692828+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 105, in perform_request 
2016-07-22T14:09:42.692829+00:00 app[web.1]:  raise ConnectionError('N/A', str(e), e) 
2016-07-22T14:09:42.692831+00:00 app[web.1]: ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x7f185a946d10>: Failed to establish a new connection: [Errno -2] Name or service not known) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7f185a946d10>: Failed to establish a new connection: [Errno -2] Name or service not known) 
2016-07-22T14:09:42.692821+00:00 app[web.1]:  rv = self.dispatch_request() 
2016-07-22T14:09:42.692821+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request 
2016-07-22T14:09:42.692822+00:00 app[web.1]:  return self.view_functions[rule.endpoint](**req.view_args) 
2016-07-22T14:09:42.692823+00:00 app[web.1]: File "/app/application.py", line 23, in index 
2016-07-22T14:09:42.692823+00:00 app[web.1]:  data = client.search(index="mynewindex", body={"query": {"match": {"email": "gmail"}}}) 
2016-07-22T14:09:42.692824+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 69, in _wrapped 
2016-07-22T14:09:42.692814+00:00 app[web.1]: Traceback (most recent call last): 
2016-07-22T14:09:42.692818+00:00 app[web.1]:  rv = self.handle_user_exception(e) 
2016-07-22T14:09:42.692815+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app 
2016-07-22T14:09:42.692825+00:00 app[web.1]:  return func(*args, params=params, **kwargs) 
2016-07-22T14:09:42.692826+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 548, in search 
2016-07-22T14:09:42.692826+00:00 app[web.1]:  doc_type, '_search'), params=params, body=body) 
2016-07-22T14:09:42.685540+00:00 heroku[router]: at=info method=GET path="/" host=elastictest.herokuapp.com request_id=87ae9ec2-edb6-4e58-b9d6-89709b883091 fwd="88.106.66.168" dyno=web.1 connect=1ms service=11ms status=500 bytes=456 

私は、エラーが原因で、 "接続文字列" であると仮定します主なエラーはConnectionError

と表示されるので、2つの質問

1)正しく接続するにはどうすればよいですか?現在受信トラフィックをすべて受け入れるように受信セキュリティルールが設定されています

2)クエリコードにエラーはありますか?

いつものように多くの感謝。

+0

どのポートのセキュリティ設定が0.0.0.0/0に設定されていますか? – error2007s

+0

申し訳ありませんが、誤解を招く可能性があります。つまり、インバウンドルールはすべての着信トラフィックを受け入れるため、理解できない限り、失敗した接続の理由にはなりません。 – user1903663

答えて

5

これは、Pythonを使用してサーバをelasticsearchに接続するための正しい方法である:hostportパラメータを持っていない

es = Elasticsearch(['IP:PORT',]) 

Elasticsearchのコンストラクタ。そのホスト

{'host': 'ip/hostname', 'port': 443, 'url_prefix': 'es', 'use_ssl': True} 

においてに関する

'schema://ip:port' 

または拡張パラメータを持つ辞書:最初のパラメータは、リスト内の各項目は、ホストを表す文字列のいずれかとすることができるリストを、あるべきですあなたの場合、あなたはおそらく使用したい:

client = Elasticsearch(['https://ec2-xx-xx-xxx-xxx.us-west-2.compute.amazonaws.com:9200']) 

The port is redundant since you are using the deafult one, so you can use remove it
client = Elasticsearch(['https://ec2-xx-xx-xxx-xxx.us-west-2.compute.amazonaws.com'])

+0

ありがとうございます。 IPとUrlの両方を試してみましたが、どちらもうまくいきませんいずれの場合も、応答は接続拒否です。上記の質問で、私はそれを試したことが分かります。 ec2サーバーの問題ですか? – user1903663

+0

@ user1903663では、Elasticsearchのコンストラクタに 'host ='はありません。私はそれを強調するために答えを更新しました。 – Dekel

+0

私はすでにあなたが言った通りに正確に試しましたhost = – user1903663

関連する問題