我正在尝试通过我的python代码将数据上传到Elasticsearch。但我得到以下错误:TransportError(406, 'Content-Type header [] is not supported')
关于我的系统上安装的elasticsearch(服务器和客户端)的详细信息-
elasticsearch(server):7.2.0 elasticsearch-py(client):7.0.2
我已经看过这里提到的其他解决方案(ElasticHttpError: 406, Elastic Search Error While indexing Data)和这里提到的解决方案(https://github.com/elastic/elasticsearch-py/issues/718)。
我已经升级了系统中安装的库。但错误仍然存在。
我使用的代码:
from datetime import datetime
from elasticsearch import Elasticsearch
try:
es = Elasticsearch(['http://localhost:9200/'],verify_certs=True)
except Exception as err:
if not es.ping():
raise ValueError("Connection failed")
doc = {
'author': 'kimchy',
'text': 'Elasticsearch: cool. bonsai cool.',
'timestamp': datetime.now(),
}
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc)
print(res['result'])
res = es.get(index="test-index", doc_type='tweet', id=1)
print(res['_source'])
es.indices.refresh(index="test-index")
res = es.search(index="test-index", body={"query": {"match_all": {}}})
print("Got %d Hits:" % res['hits']['total']['value'])
for hit in res['hits']['hits']:
print("%(timestamp)s %(author)s: %(text)s" % hit["_source"])
基于elasticsearch-py文档,它应该自动添加Content-Type
头,但它似乎不起作用。
请让我知道如何通过Python代码手动添加标题。
1条答案
按热度按时间bnl4lu3b1#
这是在一个旧系统上发生的。我安装了新的ES客户端,但该系统上的默认python是python2,因此它加载了一些旧的python2客户端。
您可以像这样打印ES客户端版本和位置: