python如何使用_bulk指令向es服务器发送post请求创建和更新

python如何使用_bulk指令向es服务器发送post请求创建和更新

在Elasticsearch中,_bulk指令用于批量添加、更新或删除文档。这个指令允许用户在一个请求中提交多个操作。

POST /my_index/_bulk
{
    
    "index":{
    
    "_id":"1"}}
{
    
    "item":"apple"}
{
    
    "index":{
    
    "_id":"2"}}
{
    
    "item":"banana"}

每两行为一个完整指令,上一行的”index“代表进行新建或更新,”_id“的值代表文档ID;下一行的"item"为文档中的字段。

拼接指令的时候必须要注意{ }的个数,每一行必须使用\n换行符结尾,否则传输错误指令之后会报错。

在Python中使用requests.post方法输出该命令,可以使用如下代码:

import json
import requests

id = 1
item = "apple"
# 第一行指令,字典格式
action = {
    
    "index": {
    
    "_id": id}}
# 第二行指令,字典格式
data = {
    
    "item": item}
# 将字典转化为json格式,并拼接成完整指令,每行指令间用`\n`换行符连接
postdata = json.dumps(action) + "\n" + json.dumps(data) + "\n"
# headers中保存授权信息和格式
headers = {
    
    
    'Content-Type': 'application/json;charset=UTF-8',
}
# es数据库的地址替换为`http://es.cloud.com/`,索引为`testindex`,`_doc/_bulk`为固定指令代表使用_bulk指令。
url = "http://es.cloud.com/testindex/_doc/_bulk"

response = requests.post(url, headers=headers, data=postdata)
print(response.text)

猜你喜欢

转载自blog.csdn.net/qq_42078712/article/details/130564429