首页 新闻 搜索 专区 学院

elasticsearch 如何查询记录的总量?

0
[已解决问题] 解决于 2018-11-06 11:04

大牛们好:菜鸟一个,项目上需要查询elasticsearch里的记录。目前磕磕绊绊把数据给查出来了,但是没办法查询出记录的总数。就是没办法获取相当于sql里面select count(*) from tableName的结果。因为这影响着前端页面的分页。所以很关键。es原来的分页是 from size。这是从某一条记录开始查,查size条记录。但是前端页面上需要一个共{total}页的,否侧下一页的按钮点不了。也就不能执行es的分页查询。请大牛们介绍一个方法。谢谢!!!

lukely的主页 lukely | 初学一级 | 园豆:147
提问于:2018-01-11 20:26
< >
分享
最佳答案
0

result.hits.hits.total 总记录数

奖励园豆:5
陈亨通 | 菜鸟二级 |园豆:207 | 2018-01-15 17:44

这个可以,但是有一个弊端,当查询数据为0的时候会报错。numHits 必须大于0

lukely | 园豆:147 (初学一级) | 2018-01-15 17:57
其他回答(2)
0

应该已经封装好了这种通用的方法,你问问同事是哪个接口传什么参数.

DanBrown | 园豆:1513 (小虾三级) | 2018-01-12 08:11

然而并没有

支持(0) 反对(1) lukely | 园豆:147 (初学一级) | 2018-01-14 21:46

@lukely: 那就自己写一个方法被,分页的方法也不难.

支持(0) 反对(1) DanBrown | 园豆:1513 (小虾三级) | 2018-01-15 08:03
0

遇到了相同的需求插一下, 我目前想到的是scroll查询出一个滚动对象生成所有数据 但是很慢 在想办法在查询这方面做一个更人性化的接口

梦境中的西岚 | 园豆:202 (菜鸟二级) | 2018-08-30 09:16

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

支持(0) 反对(0) 梦境中的西岚 | 园豆:202 (菜鸟二级) | 2018-08-30 09:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册