找到问题的解决办法了么?

elasticsearch 使用scroll查询,为什么每次查询结果相同

Elasticsearch | 作者 heh2009 | 发布于2017年08月03日 | 阅读数:4169

如题每次查询使用新的scroll_id查询结果不变
elasticsearch 版本为2.4
已邀请:

heh2009

赞同来自:

各位大大们,求解答

ElastIcPG

赞同来自:

最有可能的就是你每次的scroll  id 并没有发生改变,最好贴下代码

yangg

赞同来自:

通过你的接口/option/_search?scroll=5m&size=10&scroll_id=cXVlcnlBbmRGZXRjaDsxOzQ3NjMyOTotcXVJX0pVR1JpZTB3RzE0UE5wTEN3OzA7, 返回值里面有下个一个scroll_id,需要替换下再继续查询,下面是我的python代码
   @classmethod
def scroll_search(cls, es_url, index, query_json, scroll="5m", search_type='scan', **kwargs):
es_client = Elasticsearch(es_url, timeout=settings.ES_TIMEOUT)
hits = []
try:
resp_json = es_client.search(index=index, body=query_json, pretty=True, scroll=scroll, search_type=search_type, **kwargs)
sid = resp_json['_scroll_id']
scroll_size = resp_json["hits"]["total"]
while scroll_size > 0:
page = es_client.scroll(scroll_id=sid, scroll=scroll)
sid = page['_scroll_id']
scroll_size = len(page['hits']['hits'])
if scroll_size > 0:
hits.extend(page["hits"]["hits"])
return hits
except Exception, e:
logger.exception(e)
return None

要回复问题请先登录注册