gpt4 book ai didi

ruby - 如何从 ElasticSearch 结果集中排除带有 ids 的数组?

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:29 25 4
gpt4 key购买 nike

我将 Rails 与 ElasticSearch 结合使用。作为映射器,我正在使用 https://github.com/karmi/retire .

我有模型Exercise

class Exercise < ActiveRecord::Base
mapping do
# ....
end

def self.search(params)
archived_exercise_ids = [1,2,3,4]
tire.search(load: true, page: params[:page], per_page: 15) do
# ES documents have attribute _id

end
end
end

我有一组已经存档的练习的 id,比方说:

archived_exercise_ids = [1,2,3,4]

如何编写在 archived_exercise_ids 中包含 id 的结果练习中不考虑的搜索方法?

最佳答案

你可以按照以下方式做一些事情

tire.search(...) do
query do
filtered do
query {all}
filter :not, {:ids => {:type => :exercise, :values => archived_exercise_ids}}
end
end
end

你也可以使用 terms过滤器而不是 ids filter - 后者的特殊之处在于它使用内部 elasticsearch _id,所以 _id 是否被索引并不重要

就我个人而言,我不倾向于做这些。而是索引存档属性并过滤该属性。

关于ruby - 如何从 ElasticSearch 结果集中排除带有 ids 的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25341600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com