Подключение к ES с использованием скрипта Python
Я пытаюсь подключиться и получить данные из движка ES.
Я использую следующий скрипт:
from elasticsearch import Elasticsearch as ES
print "Setup connection..."
es=ES(['http://elasticsearch......com:9200/cuevents-2014.34,cuevents-2014.33/_search?pretty'])
print "Done!"
print "Count number of users..."
print es.count(index='cuevents-2014.34')
Но вместо этого я получаю следующее сообщение.
Setup connection...
No handlers could be found for logger "elasticsearch"
Done!
Count number of users...
Traceback (most recent call last):
File "/home/es.py", line 8, in <module>
print es.count(index='cuevents-2014.34')
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 68, in _wrapped
return func(*args, params=params, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 622, in count
params=params, body=body)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py", line 284, in perform_request
status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/http_urllib3.py", line 51, in perform_request
raise ConnectionError('N/A', str(e), e)
elasticsearch.exceptions.ConnectionError: ConnectionError(('Connection aborted.', gaierror(-2, 'Name or service not known'))) caused by: ProtocolError(('Connection aborted.', gaierror(-2, 'Name or service not known')))
Я пытаюсь подключиться и вернуть количество документов в индексе cuevents-2014.34
1 ответ
Решение
Хорошо, я снова посмотрел на ваш код более внимательно. Конструктор Elasticsearch должен указывать на корневой URL -адрес - нельзя указывать индексы в URL -адресе.
from elasticsearch import Elasticsearch as ES
print "Setup connection..."
es=ES(['http://elasticsearch......com:9200/'])
print "Done!"
print "Count number of users..."
print es.count(index='cuevents-2014.34')
См. http://elasticsearch-py.readthedocs.org/en/master/api.html
Если вы хотите ограничить доступ только определенными индексами - Elasticsearch вообще не обеспечивает контроль доступа. Вы можете сделать это путем перезаписи URL на обратном прокси.