Elasticsearch 在特定文档 ID 之后获取匹配的文档

标签 elasticsearch offset

当我搜索文档时,我取前 10 个并将它们提供给 View ,如果用户滚动到列表末尾,应该显示接下来的 10 个元素。

我知道显示文档的最后一个文档 ID,现在我必须获取下一个 10。基本上我会执行完全相同的搜索,但偏移量为 10,但能够使用相同的搜索会更好查询,将最后检索到的文档的文档 id 放入其中,并在具有该 id 的文档之后检索匹配的文档。

用 elasticsearch 可以吗?

===更新

我想多指出一点我的问题,因为现在描述的好像还不够清楚。对此感到抱歉。

案例:

你有一种提要,提要每秒都会增长。如果用户转到提要,他会得到最近的 10 个条目,如果他向下滚动,他想得到接下来的 10 个条目。

因为提要每秒都在增长,通常的偏移量/限制( Elasticsearch 中的/大小)不能解决这个问题,你会显示已经显示的条目或全新的条目,这取决于第一次请求之间的时间(第一次10 个条目)和下一个条目的请求。

在已显示的条目之后获取下 10 个元素的请求为后端提供了最后显示的条目的 ID。后端知道忽略此特定条目之前的所有条目。

目前我正在用代码处理这个问题,我从 Elasticsearch 请求包含所有匹配条目的列表并对其进行迭代,这样我就可以做我想做的一切(毫不奇怪)并提取所需的整体 block 。

我的问题是:elasticsearch 中是否有针对此问题的内置解决方案。因为用我的方式解决问题并不是最快的。

最佳答案

老话题了,不过感觉elasticsearch 5.0以后就有的Search After API,做的正是需要的东西。提供您上一个文档的 ID 及其时间戳,例如:

GET twitter/tweet/_search
{
  "size": 10,
  "query": {
    "match": {
      "title": "elasticsearch"
    }
  },
  "search_after": [
    1463538857,
    "tweet#654323"
  ],
  "sort": [
    {
      "date": "asc"
    },
    {
      "_uid": "desc"
    }
  ]
}

来源:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-after.html

关于Elasticsearch 在特定文档 ID 之后获取匹配的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19852322/

相关文章:

json - kibana中文本内部字段的平均值

algorithm - 如何实现标签搜索?

Elasticsearch : More indices vs More types

Jquery多元素

database - 使用 ElasticSearch 作为事实来源

elasticsearch - 查询格式错误,应为 "END_OBJECT",但发现为 "FIELD_NAME"

video - 获取 ffmpeg 报告的错误的(估计)时间偏移量

python pil绘制文本偏移量

jQuery:如何使隐藏的div从右上角出现

android - 平板电脑上的 Mapview : How can I center the map with an offset?