带弹性搜索的虚拟滚动
virtual scroll with elasticsearch
我正在使用 elasticsearch 和 kendo-ui 网格。现在我正在从无限滚动切换到虚拟滚动。目前我在 elasticsearch 中使用 Scroll Api,但无法控制我的请求范围。
有没有办法像滚动那样获得一个会话,我可以在其中发送 from
和 size
?或者有更好的方法来处理这个问题吗?
在搜索查询中使用 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
(或并非对所有文档都唯一的任何其他字段),您还必须对第二个字段进行排序,该字段对所有文档都必须是唯一的。
我正在使用 elasticsearch 和 kendo-ui 网格。现在我正在从无限滚动切换到虚拟滚动。目前我在 elasticsearch 中使用 Scroll Api,但无法控制我的请求范围。
有没有办法像滚动那样获得一个会话,我可以在其中发送 from
和 size
?或者有更好的方法来处理这个问题吗?
在搜索查询中使用 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
(或并非对所有文档都唯一的任何其他字段),您还必须对第二个字段进行排序,该字段对所有文档都必须是唯一的。