我正在尝试使用 python 2.7 脚本索引到 elasticsearch,如下所示:
from __future__ import print_function
import urllib, urllib2
#FORMDATA is a json format string that has been taken from a file
ELASTIC_URL = 'http://1.2.3.9:9200/indexname/entry/
req = urllib2.Request(ELASTIC_URL)
req.add_header('contentType', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(req, FORMDATA, timeout=4).read()
print(response)
我一直收到错误HTTP Error 406: Not Acceptable: HTTPError
我也尝试使用urllib.quote(FORMDATA)格式化数据并得到同样的错误。数据不是字典,它是一个字符串,当转换为 json 时是多维的。
我认为这与 req 标头需要将 contentType 指定为正确的格式这一事实有关,但我正在努力弄清楚这是什么。我设法在 elasticsearch 5.x 上进行了此导入,但现在在 3.x 上它似乎不起作用。
任何想法??
几乎所有的 elasticsearch API 调用都在标头中使用Content-Type: application/json
- 这应该是你在这里需要的。
另请注意,如果您要提交数据,则需要采用POST
的形式(如果生成自己的 ID,则需要采用PUT
),而不是GET
请求:https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html