javascript - 使用 MongoDB 和 ExpressJS 的 Elasticsearch 分页

标签 javascript node.js mongodb express elasticsearch

我试图在网上搜索解决方案,但老实说,我仍然没有找到任何可以帮助我实现这一目标的方法。

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

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

即使总共索引了 12 个用户,它似乎也能正常工作,如果我在搜索 ListView 中输入搜索“用户”,我可以找到 12 条记录,它在 a 中显示 10 个,第一个有缺失值...

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

因此,目前处理它的 Controller 如下:

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

View 有一个简单的搜索输入文本,按下提交后它会打开一个包含hits列表的新页面,所以它应该没什么复杂的......

希望对你有所帮助。谢谢

最佳答案

默认情况下,elasticsearch 返回前 10 个结果:如果您需要更多,则必须设置 size 参数。

此外,为了添加sizefrom 参数,您需要像这样编写查询:

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)。您将不得不使用您的前端来获取您想要的sizefrom 参数的值。

关于javascript - 使用 MongoDB 和 ExpressJS 的 Elasticsearch 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715451/

相关文章:

javascript - CSS/JS : Height peculiarity in Chrome

javascript - 在数组中存储具有不同 id 的多个值 - php、javascript

javascript - 无法并行运行 Selenium PhantomJS 实例

javascript - 如何使用 Nodejs 抓取 QlikView 表?

node.js - 添加新类别时,Mongoose 架构会抛出错误

json - 从 mongodb 文档中获取 JSON 数组中的数组元素

javascript - 将 ANSI 字符串转换为 HTML JavaScript/NodeJS

javascript - 拦截控制台日志到文件Nodejs

mongodb - 只删除 MongoDB 中的一个文档

javascript - WebKit "Refused to set unsafe header ' 内容长度'”