使用 python 脚本索引到 elasticsearch 6.1



我正在尝试使用 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

最新更新