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
相关产品推荐
相关产品推荐

