Python elasticsearch模块es.indices.create无弃用警告的正确调用方式
解决方案
你遇到的是7.15+版本Python Elasticsearch客户端的API规范调整问题,按以下方式修改调用代码即可完全消除两个弃用警告,且兼容6.2.4版本的服务端:
方案1:直接按新API规范传参
你当前的configs字典内容全部属于索引配置(settings)范畴,直接作为settings关键字参数传入即可:
es.indices.create( index=es_index_name, settings=configs )
方案2:不改动原有configs结构的通用写法
如果你的配置里同时包含settings、mappings等多部分内容,也可以直接将原body字典通过关键字解包的方式传入,无需拆分结构:
es.indices.create( index=es_index_name, **configs )
原理说明
7.x版本的Python Elasticsearch客户端为了明确API参数、减少传参错误,做了两处调整:
- 废弃了统一的
body参数,要求将原body内的settings、mappings、aliases等顶级字段,直接作为API的顶层关键字参数传递 - 禁止使用位置参数传参,所有参数必须显式指定参数名
以上两种写法都符合新的API规范,同时客户端会自动适配6.2.4版本服务端的请求格式,不会出现兼容性问题。
内容的提问来源于stack exchange,提问作者John R Ramsden
相关产品推荐
相关产品推荐

