您好,我正在尝试使用其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'parsing_exception',您没有为[aggregations]注册的[query]')
对于相同的请求,我有一个curl命令,该命令有效,但是当我在主体中对Python API使用查询时,会出现上述错误。
这是有效的curl请求,并给了我预期的结果。我面临的问题是如何在Elasticsearch Python API中使用它。
GET some_index/some_doc/_search{
"size": 0,
"aggregations": {
"maxuid": {
"max": {
"field": "UID"
}}}}
对此表示任何帮助,我们将不胜感激。谢谢。
答案 0 :(得分:1)
类似的事情会起作用:
res = es.search(
index="some_index",
body={
"aggs": {
"maxuid": {
"max": { "field": "UID"}
}
}
}
)
print(res)
您不能在查询子句中指定聚合,聚合和查询是两个不同的子句,这就是得到该异常的原因。
大致结构如下:
res = es.search(
index="some_index",
body={
"query": {},
"size": 0,
"aggs": {
"maxuid": {
"max": { "field": "UID"}
}
}
}
)
我尚未运行该请求,因此您可能需要对其进行一些调整。
PS:我不是python家伙:)