当前位置:   article > 正文

使用python读取elasticsearch的index的所有数据_python 获取elasticsearch的index所有行

python 获取elasticsearch的index所有行

思路通常使用from+size组合可以便利一定数据量(index.max_result_window),超过限制就es就报错了,想要读取超过index.max_result_window的数据就需要使用scroll进行翻页操作,scroll相当于使用了一个接口自身维护的以及游标(下标)去es中获取数据,每次scroll都会返回下一次scoll的id地址,直到最终hits.hits长度为0(表示已读取当前Index的数据)

search中的sroll表示上面说的下标的存活时间,之后便不可用了;size表示一次读取多少条数据;

  1. def read_es(es,search_index):
  2. #检查index是否存在
  3. if es.indices.exists(index=search_index):
  4. print('{} not find in es'.format(search_index))
  5. return []
  6. page = es.search(index=search_index,scroll="20m",size=100)
  7. scroll_id = page['_scroll_id']
  8. scroll_size = page['hits']['total']['value']
  9. for source in page['hits']['hits']:
  10. func(source)
  11. while scorll_size>0:
  12. page = es.scroll(scoll_id=scroll_id,scroll="20m")
  13. scroll_id = page['_scroll_id']
  14. scroll_size = len(page['hits']['hits'])
  15. for source in page['hits']['hits']:
  16. func(source)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/672027
推荐阅读
相关标签
  

闽ICP备14008679号