Ich verwende Elasticsearch und die Elasticsearch Rails gem. Ich habe zwei Modelle, die über ActiveRecord verknüpft sind, und ich versuche, sie mit Elasticsearch zu indizieren und zu durchsuchen.Elasticsearch Rails Indizierung Ausgabe
Hier ist mein Speicher Modell
store.rb
has_many :addresses
has_many :jobs
def as_indexed_json
self.as_json(include: {
customer: { include: { addresses: {}, jobs: {} } },
vendors: {}
})
end
settings index: { number_of_shards: 1 } do
mapping dynamic: 'false' do
indexes :id
indexes :store_number
indexes :manager
indexes :customer do
indexes :first_name
indexes :addresses do
indexes :city
indexes :state
end
indexes :jobs do
indexes :job_number
end
end
end
end
hier ist meine Adresse Modell:
def as_indexed_json
end
settings index: { number_of_shards: 1 } do
mapping dynamic: 'false' do
indexes :city
indexes :state
end
end
ich auch Searchkit als mein Frontend UI verwenden. Sokekit ist in der Lage, alle im Filialmodell vorhandenen Attribute (Filialnummer und Manager) zu aggregieren und anzuzeigen. Es ist jedoch nicht möglich, die verschachtelten Elemente anzuzeigen. Mit anderen Worten, ich kann die job_numbers nicht unter Jobs, die sich unter customer befinden, aggregieren und abrufen. Ich bin in der Lage, den Namen des Kunden usw. zu sehen. Ich habe versucht mit Typ: "geschachtelt" neben Jobs und allen anderen Objekten, aber das macht keinen Unterschied. Ich habe versucht, den as_indexed_json auch ohne Glück zu justieren. Hat jemand eine Idee dazu? Ich bin auf dieses hier gestoßen.
Danke für all das, ich denke, ich folge, was Sie sagen. Ich denke, das einzige, worüber ich mir nicht sicher bin, ist, wenn Sie sagen, dass Sie die as_indexed_json-Methode außer Kraft setzen. Adressen und Jobs sind auf dem Kundenmodell. Also, sollte ich das im Kundenmodell platzieren? Die Hierarchie mit dem, was ich habe, ist Geschäft -> Kunde -> Adresse oder Geschäft -> Kunde -> Jobs. Ich verstehe die self.addresses.map (&: city), will nur sicher sein wo ich sie hinstelle. Danke nochmal für die Hilfe dazu. –
@MikeRiley aus dem Code, den Sie gepostet haben, das 'Store'-Modell' has_many' 'Adressen' und der' Store' auch 'has_many'' Jobs', ich gehe davon aus, dass 'store' Ihr durchsuchbares Modell ist, dh Sie suchen wollen 'Speichern' Datensätze. Wenn das der Fall ist, geht alles, was ich gepostet habe, in das "Store" -Modell. –