2016-04-20 4 views
1

Wenn ich searchkick benutze, um eine Suche durchzuführen, bekomme ich alle Felder als Ergebnis. Ich möchte die Antwort beschränken, um nur bestimmte Felder wie title auszugeben.Searchkick gibt nur bestimmte Werte zurück, nicht alle

# movie.rb 
class Movie < ApplicationRecord 
    searchkick autocomplete: ['title'] 
end 

# search_controller.rb 
def autocomplete 
    render json: Movie.search(params[:query], autocomplete: true, limit: 10, fields: [:title]) 
end 

Meine Antwort ist

noch
[{"id":1,"title":"Megamind","director":"Tom McGrath","genre":"Animation | Action | Comedy","description":"The supervillain Megamind finally defeats his nemesis, the superhero Metro Man. But without a hero, he loses all purpose and must find new meaning to his life.","length":95,"year":2010,"imdb_id":"tt1001526","imdb_rating":"7.3","created_at":"2016-04-16T19:50:24.893Z","updated_at":"2016-04-16T19:50:24.893Z"}] 

ich bin nur versuchen, wieder den Titel zu bekommen. Durch das Lesen verschiedener Fragen ging ich davon aus, dass es bei meiner Suche fields zu tun haben sollte, aber das ändert nichts an der Antwort. Ich habe auch versucht, das _source -Attribut, aber kein Glück.

+0

Bin ich etwas fehlt offensichtlich? – MMachinegun

Antwort

3

Sie verwenden können:

select_v2: ["title"], load: false 
+0

Vielen Dank für die Antwort! Wenn ich 'Movie.search (params [: query], autocomplete: true, limit: 10, fields: [: title] verwende, wähle leider: [" title "])' Ich bekomme immer noch alles zurück. Oder sollte ich 'select: [" title "]' irgendwo anders platzieren? – MMachinegun

+0

In welcher Version von Searchkick befindest du dich? –

+0

Version '1.2.1'. Also im Grunde neueste – MMachinegun

0

Also im Grunde habe ich einen Weg um es herum. Da ich alle Felder zurück in meine Antwort bekomme ich filtern sie nur, bevor sie an den Client gesendet wird:

search = Movie.search(params[:query], autocomplete: true, limit: 10, fields: [:title]) 
search = search.results.map do |m| 
    { title: m.title } 
end 

render json: search 

Meine Abfrage alle Werte zurückgibt, aber ich die, die ich gerade möchte senden. Es wäre schöner, die Abfrage haben nur die Felder zurückkehren ich will, aber das funktioniert als Lösung für jetzt :)