ruby 如何使用elasticsearch-rails gem过滤查询?

llmtgqce  于 2022-12-12  发布在  Ruby
关注(0)|答案(2)|浏览(117)

我有一个布尔属性为published的Piece模型。
我希望搜索结果只包含已发布的片段:是的。
我对PiecesController的索引操作是:

def index
    @list = params[:list]
    @sort = params[:sort]
    if params[:q]
      @pieces = Piece.search(params[:q]).records
    else
      @pieces = Piece.all_in_category(@list, @sort)
    end
end

从搜索周围似乎我应该覆盖搜索方法在件控制器,但我不确定这样做的正确方式,以保持目前的搜索方法的功能。
使用elasticsearch-rails gem过滤elasticsearch结果的最佳方法是什么?

zzwlnbp8

zzwlnbp81#

请尝试此格式:
ElasticSearchv2.4

@customers = Customer.__elasticsearch__.search(
        query: { 
          bool: {
            filter: {
              term: {"account_id" => current_account.id.to_s}
            },
            must: {
              query_string: {
                query: "*#{params[:q]}*"
              }
            }
          },
        },
        size: options[:per_page],
        from: options[:from]
      ).records
4ktjp1zp

4ktjp1zp2#

你试过吗

@pieces = Piece.search(params[:q]).records.where(published: true)

它在我的一个ES模型上工作

相关问题