4

我有一个带有已发布布尔属性的 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

从四处搜索看来,我应该覆盖 Piece 控制器中的搜索方法,但我不确定执行此操作以保持当前搜索方法功能的正确方法。

使用 elasticsearch-rails gem 过滤弹性搜索结果的最佳方法是什么?

4

2 回答 2

2

试试这种格式:

弹性搜索 v2.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
于 2016-11-28T22:29:55.570 回答
-1

你有没有尝试过

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

它适用于我的一个 ES 模型

于 2015-06-30T21:22:24.707 回答