RCP*_*RCP 2 python-2.7 elasticsearch
从python脚本我将数据发送到elasticsearch服务器
这将帮助我连接到 ES
es = Elasticsearch('localhost:9200',use_ssl=False,verify_certs=True)
Run Code Online (Sandbox Code Playgroud)
通过使用波纹管代码,我可以将所有数据发送到我的本地 ES 服务器
es.index(index='alertnagios', doc_type='nagios', body=jsonvalue)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将数据发送到云 ES 服务器时,脚本执行良好,并且在索引几个文档后索引了几个文档我收到以下错误
Traceback (most recent call last):
File "scriptfile.py", line 78, in <module>
es.index(index='test', doc_type='test123', body=jsonvalue)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 73, in _wrapped
return func(*args, params=params, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 298, in index
_make_path(index, doc_type, id), params=params, body=body)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py", line 342, in perform_request
data = self.deserializer.loads(data, headers.get('content-type'))
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/serializer.py", line 76, in loads
return deserializer.loads(s)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/serializer.py", line 40, in loads
raise SerializationError(s, e)
elasticsearch.exceptions.SerializationError: (u'order=0></iframe>', JSONDecodeError('No JSON object could be decoded: line 1 column 0 (char 0)',))
Run Code Online (Sandbox Code Playgroud)
当我将数据发送到我的本地主机 ES 服务器时,相同的脚本工作正常,我不知道为什么当我将数据发送到云实例时它不起作用
请帮我
这个问题是通过使用批量索引的方法解决的,当我们索引到本地服务器时,我们一个接一个地索引文档不是问题,但是在索引到云实例时我们必须遵循批量索引方法来从记忆中克服问题和连接问题
如果我们遵循批量索引方法,它将一次将所有文档索引到elasticsearch中,而无需一次又一次地打开连接,不会花费太多时间。
这是我的代码
from elasticsearch import Elasticsearch, helpers
jsonobject= {
'_index': 'index',
'_type': 'index123',
'_source':jsonData
}
actions = [jsonobject]
helpers.bulk(es, actions, chunk_size=1000, request_timeout=200)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5222 次 |
最近记录: |