You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch Python Client的index()方法使用PUT还是POST?

Elasticsearch Python Client index()方法的请求类型与幂等性

核心结论

当调用es.index()时指定了id参数(如示例中的id=1),底层使用的是PUT请求,具备幂等性;若未指定id,则使用POST请求,不具备幂等性。

参考依据

PUT方法
POST与PUT的区别在于PUT请求具备幂等性。...

示例代码分析

你提供的官方示例代码明确指定了id参数:

from datetime import datetime
from elasticsearch import Elasticsearch
es = Elasticsearch('https://localhost:9200')

doc = {
    'author': 'author_name',
    'text': 'Interesting content...',
    'timestamp': datetime.now(),
}
resp = es.index(index="test-index", id=1, document=doc)
print(resp['result'])

这段代码的写入操作是幂等的——多次执行只会更新test-index中id=1的文档为最新内容,不会生成重复条目。

补充说明

如果调用index()时不传入id参数,Elasticsearch会自动生成随机ID,此时底层采用POST请求,重复执行会创建多个不同ID的文档,不具备幂等性。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:52:35