私は、graylog2 で Elasticsearch を選択したため、非常に悪い週を過ごしています。Python を使用して ES のデータに対してクエリを実行しようとしています。
クライアントをフォローしてみました。
- ESClient - 非常に奇妙な結果です。維持されていないと思います。query_body は効果がなく、すべての結果が返されます。
- Pyes - 判読不能、文書化されていません。ソースを閲覧しましたが、単純なクエリを実行する方法がわかりません。おそらく私はそれほど頭が良くありません。ベース クエリを json 形式で実行し、Python オブジェクト/イテレータを使用して結果を分析することもできます。しかし、パイズはそれを容易にしません。
Elasticutils - 別のドキュメントがありますが、完全なサンプルはありません。コードが添付された次のエラーが表示されます。この S() を使用して正しいホストに接続する方法さえわかりませんか?
es = get_es(ホスト=ホスト、デフォルトインデックス=[インデックス])
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でロードしています。それがうまくいくことを願っていますが、カールがelasticsearchから100万件のメッセージをダウンロードするのはうまくいかないかもしれません.