Elasticsearch分页与MongoDB和ExpressJS

我试图在网上search解决scheme,但说实话,我仍然没有发现任何有助于我实现这一目标的东西。

这是我第一次使用ElasticSearch,对于Node和MongoDB我也很新。

所以,我遵循了一种教程,并从NPM中实现了Mongooastic,让ElasticSearch和Node一起工作。

它似乎工作正常,即使总共有12个用户索引,如果我在search列表视图中键入search“用户”,我可以find12条logging,它显示10在每个和第一个缺less值。 ..

但是对我来说,主要的问题是分页…或者某种…实现无限滚动也是很好的,但是我不知道如何处理它。

所以,目前处理它的控制器如下:

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 }); }); }; 

我真的不知道在哪里放大sizefrom这里…了解了这一点,我也想知道如何实现,如果可能的话,一种无限的滚动…以及如何处理链接分页…即: prev, 1, 2, 3, 4, ..., next

该视图有一个简单的searchinput文本,按提交后打开一个新的页面与hits列表,所以它应该没有什么复杂的… …

我希望你能帮忙。 谢谢

默认情况下,elasticsearch会返回10个第一个结果:如果需要更多,您将不得不设置size参数。

此外,为了添加大小和参数,你需要写下你的查询,如下所示:

 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 }); }); 

(请参阅https://github.com/taterbase/mongoosastic/issues/123

这将给用户n°30,用户n°60(更多信息在这里: http : //www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html )。 你将不得不玩你的前端,以获取你想要的大小和参数的值。