大牛们好:菜鸟一个,项目上需要查询elasticsearch里的记录。目前磕磕绊绊把数据给查出来了,但是没办法查询出记录的总数。就是没办法获取相当于sql里面select count(*) from tableName的结果。因为这影响着前端页面的分页。所以很关键。es原来的分页是 from size。这是从某一条记录开始查,查size条记录。但是前端页面上需要一个共{total}页的,否侧下一页的按钮点不了。也就不能执行es的分页查询。请大牛们介绍一个方法。谢谢!!!
result.hits.hits.total 总记录数
这个可以,但是有一个弊端,当查询数据为0的时候会报错。numHits 必须大于0
应该已经封装好了这种通用的方法,你问问同事是哪个接口传什么参数.
然而并没有
@lukely: 那就自己写一个方法被,分页的方法也不难.
遇到了相同的需求插一下, 我目前想到的是scroll查询出一个滚动对象生成所有数据 但是很慢 在想办法在查询这方面做一个更人性化的接口
scanResp = helpers.scan(es, _body, scroll= "10m", index= _index, doc_type= _doc_type, timeout="10m")
#返回一个类似生成器一样的游标对象,可以借助此不断把所有数据遍历个光
#然后 计算出总数
total = 0
for resp in scanResp:
total +=1
print resp
这是我用Python 的scan方法实现的
如果还有更方便的ES可以做数据可视化的 或者查询ES更好的方法,互相交流哈 我系菜鸡+1