2015-01-16 5 views
0
class Product < ActiveRecord::Base 
belongs_to :city 
has_and_belongs_to_many :categories 
before_destroy { categories.clear } 
searchkick locations: ["location"] 

def search_data 
    { 
     istatus: i_status, 
     name: name, 
     price: price, 
     city_id: city_id, 
     value: value, 
     discount: discount, 
     expiry_date: expiry_date, 
     created_at: created_at, 
     products_sold: products_sold, 
     city: city.name, 
     deal_type: deal_type, 
     country: city.country.name, 
     category_id: categories.map(&:id), 
     location: [latitude, longitude] 
    } 
end 

def self.apply_filters(request) 
    # @product = Product.search "Tex-Mex", limit:10 #=>this works 
    @product = Product.search body: {match: {name: "Tex-Mex"}},limit: 10 #=>does not work, the limit part work 
    end 
end 

, когда я использовать расширенный поиск, используя тело .. он не возвращает желаемых результатов хотя предел: 10 часть нас работает, как это делает возвращение 10 результатов толькоsearchkick расширенный поиск не работает

ответ

0

Я полагаю, что есть некоторые недостающие данные в документации.

Вот ссылка на запрос органа, который работает на основе тестов, написанных в SearchKick: https://github.com/ankane/searchkick/blob/c8f8dc65df2e85b97ea508e14ded299bb8111942/test/index_test.rb#L47

Для расширенного поиска работы, так оно и должно быть записано это:

@product = Product.search body: { query: { match: {name: "Tex-Mex"}}},limit: 10

Вам нужен ключ query, следующий за body.

0

// условия = {}

query = Product.search params[:query], execute: false, where : conditions 

query.body[:query] = { match: {name: "Tex-Mex"} } 

query.body[:size] = 10 

query.execute 
0

Вам нужно будет создать свой запрос, используя Elasticsearch DSL. В частности, используя size и match.

Product.search body: { query: { match: {name: "Tex-Mex"} }, size: 10 } 

При использовании расширенного поиска Searchkick игнорирует параметры вне хеша. В то время как кеш тела позволяет использовать полный ES DSL.

Смежные вопросы