Javascript 使用MongoDB和ExpressJS进行Elasticsearch分页
我试图在网上搜索解决方案,但说实话,我仍然没有找到任何帮助我实现这一目标的方法 这是我第一次使用ElasticSearch,我对Node和MongoDB也很陌生 所以,我遵循了一种教程,从NPM实现了Mongoostic,让ElasticSearch与Node一起工作 它似乎可以很好地工作,即使对总共12个用户进行了索引,如果我在搜索列表视图中键入搜索“user”,我可以找到12条记录,它在a中显示每个记录10条,并且第一条记录缺少值 但对我来说主要的问题是分页。。。或者是一种。。。在上面实现无限滚动也很好,但我真的不知道如何处理它 因此,目前处理它的控制器如下所示:Javascript 使用MongoDB和ExpressJS进行Elasticsearch分页,javascript,node.js,mongodb,express,
elasticsearch,Javascript,Node.js,Mongodb,Express,
elasticsearch,我试图在网上搜索解决方案,但说实话,我仍然没有找到任何帮助我实现这一目标的方法 这是我第一次使用ElasticSearch,我对Node和MongoDB也很陌生 所以,我遵循了一种教程,从NPM实现了Mongoostic,让ElasticSearch与Node一起工作 它似乎可以很好地工作,即使对总共12个用户进行了索引,如果我在搜索列表视图中键入搜索“user”,我可以找到12条记录,它在a中显示每个记录10条,并且第一条记录缺少值 但对我来说主要的问题是分页。。。或者是一种。。。在上面实现无
exports.searchUsers = function(req, res) {
User.search({
query_string: {
query: req.query.q
}
},
{ hydrate: true },
function(err, results) {
if (err) res.send(err);
res.render('search-results', {
results: results,
users: results.hits.hits
});
});
};
我真的不知道把size
和from
放在哪里。。。在理解了这一点之后,我也想知道如何实现,如果可能的话,一种无限卷轴。。。以及如何处理分页的链接。。。i、 e.:prev,1,2,3,4,…,next
该视图有一个用于搜索的简单输入文本,按“提交”后,它将打开一个新页面,其中包含点击列表
,因此它应该不复杂
我希望你能帮忙。谢谢默认情况下,elasticsearch返回前10个结果:如果需要更多结果,您必须设置大小参数 此外,为了添加大小和from参数,您需要这样编写查询:
User.search({
query: {
query_string: {
query: req.query.q
}
},
size: 30,
from: 30
},
{hydrate: true},
function (err, results) {
if (err) res.send(err);
res.render('search-results', {
results: results,
users: results.hits.hits
});
});
(见此处:)
这将为您提供30号用户到60号用户(更多信息如下:)。您必须使用前端才能从参数中获得所需的大小和值。太棒了!你知道是否也可以用它以某种方式进行无限滚动吗?对不起,我现在就试过了,它根本不起作用。我收到以下错误:
阶段的所有碎片都失败:[query]
奇怪。。。你能把整个错误信息粘贴到这里吗?