Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 多个筛选器无法使用elasticsearch rails_Ruby On Rails_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Ruby On Rails,elasticsearch" /> elasticsearch,Ruby On Rails,elasticsearch" />

Ruby on rails 多个筛选器无法使用elasticsearch rails

Ruby on rails 多个筛选器无法使用elasticsearch rails,ruby-on-rails,elasticsearch,Ruby On Rails,elasticsearch,在我的发票模型中,我在3个单独的方法中定义了3个术语过滤器。查询工作正常,但有时仅对查询应用筛选器。 如果我更改过滤器的顺序,则仅应用顶部过滤器,其余两个过滤器将被忽略 以下是型号代码: Invoice.search(self.search_options(options, qry)) def self.search_options(options, qry) [query(qry), status_filter(options[:status]), state_filter(

在我的发票模型中,我在3个单独的方法中定义了3个术语过滤器。查询工作正常,但有时仅对查询应用筛选器。 如果我更改过滤器的顺序,则仅应用顶部过滤器,其余两个过滤器将被忽略

以下是型号代码:

Invoice.search(self.search_options(options, qry))

def self.search_options(options, qry)
  [query(qry),
   status_filter(options[:status]),
   state_filter(options[:invoice_state]),
   office_filter(options[:current_office_id]),
   aggregates
  ].compact.reduce(:merge)
end

def self.status_filter(status)
  {filter: {term: {invoice_status: status}}}
end

def self.state_filter(state)     
  {filter: {term: {state: state}}}
end

def self.office_filter(current_office_id)
  {filter: {term: {office_id: current_office_id}}}
end

我如何一次应用所有3个过滤器?

你能代表rails代码共享等价的查询DSL吗?{Query:{bool:{must:[{match_all:{},{term:{invoice.office_id:someid},{term:{invoice.invoice_状态:active}}],must not:[],should:[]},from:0,size:10,sort:[],facets:{}复制你的查询时,我在查询DSL中发现两个错误。我尝试过类似的查询,它对我很有效@Roopendra多个过滤器对你来说可以吗?是的,多个过滤器应该可以。请参考我在qbox中共享的查询。