elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python 为什么elasticsearch报告的点击数因查询方法而异?

Python 为什么elasticsearch报告的点击数因查询方法而异?,python,elasticsearch,Python,elasticsearch,我有一个elasticsearch索引,它有60k个元素。我知道通过检查head插件,我通过(结果在右下角)获得了相同的信息 然后,我想通过两种不同的方式从Python查询相同的索引:通过直接请求调用和使用弹性搜索模块: import elasticsearch import json import requests # the requests version data = {"query": {"match_all": {}}} r = requests.get('http://elk.

我有一个elasticsearch索引,它有60k个元素。我知道通过检查
head
插件,我通过(结果在右下角)获得了相同的信息

然后,我想通过两种不同的方式从Python查询相同的索引:通过直接
请求
调用和使用
弹性搜索
模块:

import elasticsearch
import json
import requests

# the requests version
data = {"query": {"match_all": {}}}
r = requests.get('http://elk.example.com:9200/nessus_current/_search', data=json.dumps(data))
print(len(r.json()['hits']['hits']))

# the elasticsearch module version
es = elasticsearch.Elasticsearch(hosts='elk.example.com')
res = es.search(index="nessus_current", body={"query": {"match_all": {}}})
print(len(res['hits']['hits']))
在这两种情况下,结果都是
10
——与预期的60k相差甚远。查询的结果是有意义的(内容是我所期望的),只是其中只有几个

我从这10个点击中选择了一个,并用Sense查询它的
\u id
来结束循环。正如预期的那样,事实上:

因此,看起来这10个点击是整个索引的一个子集,为什么在Python版本的调用中没有报告所有元素呢?

。如果需要更多,请指定
“大小”:例如100
。但是,要小心,不建议使用size返回所有文档,因为这会导致集群崩溃。要获取所有结果,请使用


而且我认为应该是
res['hits']['total']
而不是
res['hits']['hits']
来获得总点击数。

你说得对,真丢脸:我以前使用过一些类似的代码,但完全忘记了默认大小(我也使用了滚动)。我使用了
len(res['hits']['hits'])
这样代码的一部分至少是可以的:)。谢谢