我尝试使用Python API从Elasticsearch获取字段“UID”的最大值。当我尝试使用下面的代码时,我得到了一个错误。
res = es.search(index="some_index", body={"query": {"size": 0,
"aggregations": {
"maxuid": {
"max": {
"field": "UID"
}}}}})
print(res)
elasticsearch.exceptions.RequestError:TransportError(400,u '剖析例外状况',u '没有为[汇总]注册[查询]')
我有一个curl
命令用于相同的请求,它可以工作,但是当我在Python API的主体中使用query
时,它会引发上面的错误。
这是一个curl
请求,它可以正常工作并给出预期的结果。如何在Elasticsearch Python API中使用它是我面临的问题。
GET some_index/some_doc/_search{
"size": 0,
"aggregations": {
"maxuid": {
"max": {
"field": "UID"
}}}}
任何帮助都是非常感谢的。谢谢。
2条答案
按热度按时间f45qwnt81#
类似这样的方法可以奏效:
你不能在查询子句中指定聚合,聚合和查询是两个不同的子句,这就是你得到异常的原因。
大致结构如下:
我还没有运行请求,所以你可能要稍微调整一下。
PS:我不是Python的家伙:)
prdp8dxp2#
由于不赞成使用
body
参数,因此应单独指定这些参数,以避免出现警告以及将来可能出现的中断:弃用警告:“body”参数已弃用,并将在未来版本中删除。请改用单个参数
不需要
query
参数,直接使用aggs
: