现象
使用python查询es数据时出现下面错误
bash
Traceback (most recent call last):
File "getUsers.py", line 26, in <module>
response = es.search(index="lizz_users", body=query)
File "/usr/local/lib/python3.6/site-packages/elasticsearch/_sync/client/utils.py", line 402, in wrapped
return api(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/elasticsearch/_sync/client/__init__.py", line 3734, in search
"POST", __path, params=__query, headers=__headers, body=__body
File "/usr/local/lib/python3.6/site-packages/elasticsearch/_sync/client/_base.py", line 321, in perform_request
message=message, meta=meta, body=resp_body
elasticsearch.ApiError: ApiError(406, 'Content-Type header [application/vnd.elasticsearch+json; compatible-with=8] is not supported', 'Content-Type header [application/vnd.elasticsearch+json; compatible-with=8] is not supported')
原因
python安装的Elasticsearch版本与es服务的版本不一致
解决办法
查看es版本
bash
curl http://172.11.111.11:9200/
{
"name" : "bike-es-ssd-1",
"cluster_name" : "bike-user",
"cluster_uuid" : "9QixMq6dTpeDO-WEfnq_PA",
"version" : {
"number" : "7.6.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
"build_date" : "2020-02-06T00:09:00.449973Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
- 可以看到es版本为7.6.0
重新安装python插件
bash
pip3 install elasticsearch==7.6.0
搞定,执行,成功