Elasticsearch Python客户端8.12.0:size参数正确用法及弃用警告解决
Elasticsearch Python客户端8.12.0中size参数的正确用法
你遇到的弃用警告是因为8.x版本的客户端不再允许同时通过body参数和独立参数(比如size)传递查询配置,有两种合规的写法:
方式一:将size融入body参数
把size直接添加到你的query字典中,然后只传递index和body参数:
# 直接在查询体中定义size query = { "query": { # 你的查询逻辑,比如 match_all 或者其他条件 "match_all": {} }, "size": 50 } es.search(index=source_index, body=query)
如果已经有现成的query字典,可以用字典合并的方式添加size:
query_with_size = {**query, "size": 50} es.search(index=source_index, body=query_with_size)
方式二:使用显式参数传递(推荐)
从8.x版本开始,官方推荐直接将查询相关的参数作为独立keyword参数传入,不再使用body参数:
# 提取原query中的查询逻辑,搭配size参数 es.search(index=source_index, query=query["query"], size=50)
如果原body中还有其他配置(比如排序、聚合),也可以同样作为独立参数传递:
es.search( index=source_index, query=query["query"], size=50, sort=query.get("sort"), aggs=query.get("aggs") )
两种方式都能避免弃用警告,方式二更贴合新版客户端的设计风格,后续版本会更稳定。
内容的提问来源于stack exchange,提问作者gbs
相关产品推荐
相关产品推荐

