【问题标题】:Paginate in elasticsearch在弹性搜索中分页
【发布时间】:2016-05-30 16:22:27
【问题描述】:

我是弹性搜索的新手,至少对于烧瓶扩展 (flask-elasticsearch),文档非常糟糕。任何帮助都非常重要。

我有一个看起来像这样的 elasticsearch 查询

res = es.search(index="user-index", from_=(page-1)*10, size=10, body={"query": {"match_all": {}}})

我查询用户表并且只想要 10 个结果。现在我仍然需要获取实际的表格行。所以我这样查询他们

list_of_ids = []
for hit in res['hits']['hits']:
    list_of_ids.append(hit["_id"])

search_result = models.User.query.filter(models.User.id.in_(list_of_ids)).paginate(page, 10, False)

如您所见,我正在使用 paginate() 函数。但是,由于我将 10 个 id 的列表传递到查询中,因此 paginate 函数不知道搜索查询中的结果总数。所以分页功能不能这样工作...

我可以自己完成所有分页功能,但我想知道是否有一种很好的方法可以保留分页功能并以某种方式将其与弹性搜索链接? 谢谢 卡尔

【问题讨论】:

  • 使用这种方法,您不会得到按分数排序的结果。

标签: elasticsearch flask pagination


【解决方案1】:

我找到了一个解决方案...可以只分配相关的分页值,例如

search_result.total = res['hits']['total']
search_result.page = page

干杯

【讨论】:

    猜你喜欢
    • 2017-01-27
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2015-03-02
    • 2014-11-09
    相关资源
    最近更新 更多