带弹性搜索的虚拟滚动

virtual scroll with elasticsearch

我正在使用 elasticsearch 和 kendo-ui 网格。现在我正在从无限滚动切换到虚拟滚动。目前我在 elasticsearch 中使用 Scroll Api,但无法控制我的请求范围。

有没有办法像滚动那样获得一个会话,我可以在其中发送 fromsize?或者有更好的方法来处理这个问题吗?

在搜索查询中使用 search_after 参数。

search_after 可用于按一个或多个字段对文档进行排序。在 search_after 参数中,您可以为所有检索到的文档设置更高的字段值。

例如,如果您有一个值从 0 到 1000 的数字字段 document_position。要检索 document_position 值大于 200 的文档,您可以使用以下查询:

{
    "query": { // your query },
    "sort": "document_position",
    "search_after": [200]
}

您可以在搜索后参数中使用 score 值,但请注意默认情况下为 the score is not necessary consistent beetween search request。该文档提供了解决此问题的方法。如果您使用 score(或并非对所有文档都唯一的任何其他字段),您还必须对第二个字段进行排序,该字段对所有文档都必须是唯一的。