PUT json 数据到 Elasticsearch 集群 Python
PUT json data to Elasticsearch cluster Python
我正在尝试将数据 PUT 到 Elasticsearch 服务器。我可以手动 PUT 数据,但我似乎无法将其自动化。
jsonValue = json.dumps(data).encode('utf8')
req = urllib2.Request("http://[Elastic IP Address]/cities", jsonValue, {'Content-Type': 'application/json'})
req.get_method = lambda: 'PUT'
f = urllib2.urlopen(req)
response = f.read()
f.close()
我遇到的错误:
Traceback (most recent call last):
File "import_elastic.py", line 27, in <module>
f = urllib2.urlopen(req)
File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 475, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request
我输入的第一个值:
{"name": "Tia Juana River", "country": "US", "alternate": "Rio Tiajuana,Rio Tijuana,R\u00edo Tijuana,Tia Juana River", "long": "-117.12865", "lat": "32.55668", "timezone": "America/Los_Angeles", "id": "3981608", "population": "0"}
你也需要输入类型名称
http://[Elastic IP Address]/cities/city
上面的 URL 应该可以。
python 有一个 Elasticsearch 客户端,你也可以试试看。
我正在尝试将数据 PUT 到 Elasticsearch 服务器。我可以手动 PUT 数据,但我似乎无法将其自动化。
jsonValue = json.dumps(data).encode('utf8')
req = urllib2.Request("http://[Elastic IP Address]/cities", jsonValue, {'Content-Type': 'application/json'})
req.get_method = lambda: 'PUT'
f = urllib2.urlopen(req)
response = f.read()
f.close()
我遇到的错误:
Traceback (most recent call last):
File "import_elastic.py", line 27, in <module>
f = urllib2.urlopen(req)
File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 475, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request
我输入的第一个值:
{"name": "Tia Juana River", "country": "US", "alternate": "Rio Tiajuana,Rio Tijuana,R\u00edo Tijuana,Tia Juana River", "long": "-117.12865", "lat": "32.55668", "timezone": "America/Los_Angeles", "id": "3981608", "population": "0"}
你也需要输入类型名称
http://[Elastic IP Address]/cities/city
上面的 URL 应该可以。 python 有一个 Elasticsearch 客户端,你也可以试试看。