保持ID顺序与查询相同

spa*_*pas 5 elasticsearch tire

我正在使用Elasticsearch来获取ID到某些值的映射,但是至关重要的是,保持ID顺序的结果顺序。

例:

  def term_mapping(ids)
    ids = ids.split(',')
    self.search do |s|
      s.filter :terms, id: ids
    end
  end

  res = term_mapping("4,2,3,1")
Run Code Online (Sandbox Code Playgroud)

结果集合应包含ID顺序为4,2,3,1的对象...

你有什么想法我能做到吗?

imo*_*tov 0

如果您需要使用搜索,您可以在将 id 发送到 elasticsearch 之前对其进行排序,并检索按 id 排序的结果,或者您可以创建一个自定义排序脚本,该脚本将返回当前文档在 ids 数组中的位置。然而,更简单、更快的解决方案是简单地使用Multi-Get而不是搜索。