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

时间:2015-06-30 15:33:12

标签: ruby-on-rails ruby elasticsearch elasticsearch-rails

我有一个具有已发布布尔属性的Piece模型。

我希望搜索结果只包含已发布的片段:true。

我对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过滤弹性搜索结果的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

你试过吗

var sendTo;
var emails = [];

// assign the sendTo based on whatever you're doing

if(sendTo == 'Tom'){
    emails = ['one@domain.com','two@domain.com'];
    for (var i = 0; i < emails.length; i++){
         sendEmail = function() {
            return Meteor.Mandrill.send({
                to: 'yourreceiver@domain.com',
                from: emails[i],
                subject: subject,
                html: html
            });
        }
    }
}

它适用于我的一个ES模型

答案 1 :(得分:1)

请尝试以下格式:

Elasticsearch 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