根据文档,现在按如下方式完成:
# ✅ New usage:
es.search(query={...})
# ❌ Deprecated usage:
es.search(body={"query": {...}})
所以查询直接在同一行代码中完成,没有“body”,用您需要使用的 api 替换,在您的情况下,“count”代替“search”。 您可以尝试以下方法:
# ✅ New usage:
es.count(query={...})
# ❌ Deprecated usage:
es.count(body={"query": {...}})
enter code here
您可以点击以下链接了解更多信息:
https://github.com/elastic/elasticsearch-py/issues/1698
例如,如果查询是:
GET index-00001/_count
{
"query" : {
"match_all": {
}
}
}
Python 客户端将是下一个:
my_index = "index-00001"
query = {
"match_all": {
}
}
hits = en.count(index=my_index, query=query)
或
hits = en.count(index=my_index, query={"match_all": {}})
【讨论】:
-
当我尝试按照建议修改参数时:"""count = en.count(index= my_index, query=query['query'] )["count"]""" 而不是"""count = en.count(index= my_index, body={'query': query['query']} )["count"]""" - 我收到这个错误“客户端注意到服务器不是Elasticsearch,我们不支持这个未知产品”
-
我已经用一个例子更新了答案。我希望它有效或有用
-
我认为错误消息表明您的弹性搜索集群存在连接问题,而不是查询您可以试试这个:client = Elasticsearch(cloud_id=CLOUD_ID,basic_auth=("elastic", ELASTIC_PASSWORD) ) 然后:client.info()。 elastic.co/guide/en/elasticsearch/client/python-api/master/…