获取ElasticSearch结果中项目的页码

问题描述:

我有一个按字母顺序排列的人员索引。我的目标是找到一个人列出的索引页面。例如,“蒂姆咖喱”可能会列在“T”部分的第5页。目前我正在用ActiveRecord获取页码; Elasticsearch结果每页20个,所以我可以根据索引计算出页码。但是,如果可能的话,直接从Elasticsearch获得页码似乎更加明智,以确保我能找到正确的页面。有没有办法从ES获取这些数据?获取ElasticSearch结果中项目的页码

def page_index 
    letter= self.name[0].downcase 
    index=Person.where("lower(name) like?", "#{letter}%").order("lower(name)").pluck(:id).index(self.id) 
    page=index/20 + 1 
end 
+0

你能解释一下你的用例吗? –

+0

我将该网站中其他地方提到的人员的实例链接到此页面。 –

+0

好吧,我不确定你需要什么,所以我的回答充其量只是无用。然而,找到页面最好是按照您已经完成的方式完成。有一个类似但不相同的问题[这里](http://*.com/questions/16824016/elastic-search-is-it-possible-to-get-the-index-of-a-specific-document-in -a-sear) –

此功能不会与ElasticSearch捆绑在一起。如果这是您正在寻找的功能,则使用每个页面和索引的结果是正确的方法。

由于目前尚不清楚您需要哪种文档,或者您尝试实现的整体用户体验是什么,因此我会记住,您始终可以通过各种方式搜索特定文档的索引(ces)(筛选查询如果您需要“蒂姆咖喱”,id或_uid等名称)。

另外ES是一个基于全文的搜索客户端,找到一个对象,它的属性可能通过数据库调用得到更好的服务。

这又是一个小小的错误,因为我不知道你究竟需要什么或试图达到整体,但是通过访问结果中的索引找到返回结果集中的特定结果页面和简单的数学。

+0

谢谢。我会继续坚持我正在做的事情。我只需要确保索引保持最新。 –