Клиенты Elasticsearch для Python, решения нет

У меня очень плохая неделя, когда я выбрал elasticsearch с Graylog2. Я пытаюсь выполнять запросы к данным в ES, используя Python.

Я пробовал следующие клиенты.

  1. ESClient -Очень странные результаты, я думаю, что он не поддерживается, тело запроса _не имеет никакого эффекта, оно возвращает все результаты.
  2. Pyes -Нечитаемый, недокументированный. Я просмотрел источники и не могу понять, как выполнить простой запрос, может быть, я просто не такой умный. Я даже могу запускать базовые запросы в формате json, а затем просто использовать объект/итераторы Python для анализа результатов. Но Пайес не делает это легко.
  3. Elasticutils -Другой задокументированный, но без полного примера. Я получаю следующую ошибку с прикрепленным кодом. Я даже не знаю, как он использует этот S ()для подключения к нужному хосту?

    es = получить _es (hosts=HOST, по умолчанию _indexes=[ИНДЕКС])

    basic _s = S ().indexes (INDEX ).doctypes (DOCTYPE ).values ​​_dict()

результаты:

 print basic_s.query(message__text="login/delete")
  File "/usr/lib/python2.7/site-packages/elasticutils/__init__.py", line 223, in __repr__
    data = list(self)[:REPR_OUTPUT_SIZE + 1]
  File "/usr/lib/python2.7/site-packages/elasticutils/__init__.py", line 623, in __iter__
    return iter(self._do_search())
  File "/usr/lib/python2.7/site-packages/elasticutils/__init__.py", line 573, in _do_search
    hits = self.raw()
  File "/usr/lib/python2.7/site-packages/elasticutils/__init__.py", line 615, in raw
    hits = es.search(qs, self.get_indexes(), self.get_doctypes())
  File "/usr/lib/python2.7/site-packages/pyes/es.py", line 841, in search
    return self._query_call("_search", body, indexes, doc_types, **query_params)
  File "/usr/lib/python2.7/site-packages/pyes/es.py", line 251, in _query_call
    response = self._send_request('GET', path, body, querystring_args)
  File "/usr/lib/python2.7/site-packages/pyes/es.py", line 208, in _send_request
    response = self.connection.execute(request)
  File "/usr/lib/python2.7/site-packages/pyes/connection_http.py", line 167, in _client_call
    return getattr(conn.client, attr)(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/pyes/connection_http.py", line 59, in execute
    response = self.client.urlopen(Method._VALUES_TO_NAMES[request.method], uri, body=request.body, headers=request.headers)
  File "/usr/lib/python2.7/site-packages/pyes/urllib3/connectionpool.py", line 294, in urlopen
    return self.urlopen(method, url, body, headers, retries-1, redirect) # Try again
  File "/usr/lib/python2.7/site-packages/pyes/urllib3/connectionpool.py", line 294, in urlopen
    return self.urlopen(method, url, body, headers, retries-1, redirect) # Try again
  File "/usr/lib/python2.7/site-packages/pyes/urllib3/connectionpool.py", line 294, in urlopen
    return self.urlopen(method, url, body, headers, retries-1, redirect) # Try again
  File "/usr/lib/python2.7/site-packages/pyes/urllib3/connectionpool.py", line 294, in urlopen
    return self.urlopen(method, url, body, headers, retries-1, redirect) # Try again
  File "/usr/lib/python2.7/site-packages/pyes/urllib3/connectionpool.py", line 255, in urlopen
    raise MaxRetryError("Max retries exceeded for url: %s" % url)
pyes.urllib3.connectionpool.MaxRetryError: Max retries exceeded for url: /graylog2/message/_search

Я бы хотел, чтобы разработчики этих хороших проектов предоставили несколько полных примеров. Даже глядя на источники, я не в полной растерянности.

Есть ли какое-нибудь решение, помогите мне с elasticsearch и python, или я должен просто бросить все это и заплатить за хорошую учетную запись splunk и положить конец этим страданиям.

Я продолжаю использовать curl, загружаю весь результат json и загружаю его json. Надеюсь, это сработает, хотя загрузка curl 1 миллиона сообщений из elasticsearch может произойти не просто так.

8
задан Abhishek Dujari 3 August 2012 в 13:47
поделиться