我在这方面有困难:下面所有的返回值都是405,我不知道为什么:
data = {
"xxx" : "status",
"value" : "incomplete"
}
headers = {'Content-type': 'application/json'}
response = requests.post(f'http://localhost:9200/my_index', data=json.dumps(data))
response = requests.post(f'http://localhost:9200/my_index', data=json.dumps(data), headers=headers)
response = requests.post(f'http://localhost:9200/my_index', json=data)
response = requests.post(f'http://localhost:9200/my_index', json=data, headers=headers)
注意:我也尝试使用“http://localhost:9200/my_index/xxxx_docxx *”来代替:他们都得到406。
ES肯定在运行,我可以在CLI使用Postman和curl
。requests.put
执行上述尝试(以“.../_doc/1”结尾),将获得406或401,但以下情况除外:
response = requests.put(f'http://localhost:9200/my_index/_doc/2', data=json.dumps(data), headers=headers)
...其工作(201或200取决于索引是否已经存在)。
操作系统为Linux Mint 20,ES为7.16.3。
2条答案
按热度按时间yi0zb3m41#
根据文档,您必须在索引名称后放置_doc:
您可以选择Elastic是否为您创建id,也可以指定一个id。
Index API
iezvtpos2#
尝试在头中添加“accept”:“application/json”。