python - 将 json 文档索引到 Elasticsearch 会引发 TransportError
问题描述
我有一个 JSON 文件,我正在使用 json.load 方法加载该文件,然后将内容发送到 Elasticsearch。但是,它会抛出 TransportError。
示例代码:
inputFile = sys.argv[1]
with open(inputFile) as jsonFile:
jsonData = json.load(jsonFile)
es = Elasticsearch([{'host':'x.x.x.175', 'port':9200}])
es.index(index="fmb_420", doc_type='fmb_420', body=jsonData)
日志错误:
Traceback (most recent call last):
File "FMB_DB.py", line 12, in <module>
es.index(index="fmb_420", doc_type='fmb_420', body=jsonData)
File "/usr/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 76, in _wrapped
return func(*args, params=params, **kwargs)
File "/usr/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 319, in index
_make_path(index, doc_type, id), params=params, body=body)
File "/usr/lib/python2.7/site-packages/elasticsearch/transport.py", line 314, in perform_request
status, headers_response, data = connection.perform_request(method, url, params, body, headers=headers, ignore=ignore, timeout=timeout)
File "/usr/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 180, in perform_request
self._raise_error(response.status, raw_data)
File "/usr/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 125, in _raise_error
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: TransportError(400, u'mapper_parsing_exception', u'not_x_content_exception: Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes')
更新:
在 JSON 没有根元素之前,我通过在 JSON 文件中添加根元素来解决此问题。
解决方案
我通过在 JSON 文件中添加根元素解决了这个问题。
例如从这里到
{
"name":"alex",
"age":34
}
这个:
{
"employee": {
"name":"alex",
"age":34
}
}
推荐阅读
- webpack - 如何在 monorepo 中配置 Create React App 以使用 root babel.config.js?
- matplotlib - 可视化:通过 matplotlib 和 seaborn 创建的图形的-x-labels 和标题未正确显示
- c - 访问另一个结构内的'typedef struct with char array'
- flutter - Flutter:检查互联网连接并根据输出导航?
- java - 环境中没有应用程序属性
- arrays - 将 jq 输出分配给 bash 数组
- zsh - Testkitchen / KitchenCI - 如何更改控制台输出颜色?
- javascript - 在angularJS的控制器中绑定数据
- c# - 如何判断字体是否倾斜?
- laravel - Laravel 5.7 SendEmail 无法正常工作