Ich habe zuvor das mapper-attachments plugin verwendet, das nun veraltet ist, was ziemlich einfach war, zusammen mit der normalen Indizierung. Nun, da der Ingest-Anhang es ersetzt hat und eine Pipeline usw. benötigt, ist es verwirrend geworden, wie man dies richtig benutzt.Wie verwenden Sie das Ingest-Attachment-Plugin mit elasticsearch-rails?
Nehmen wir an, ich habe ein Modell mit dem Namen Media
, das ein file
Feld enthält, das die Base64-codierte Datei enthält. Ich habe folgende Zuordnungen in dieser Datei:
mapping '_source' => { :excludes => ['file'] } do
indexes :id, type: :long, index: :not_analyzed
indexes :name, type: :text
indexes :visibility, type: :integer, index: :not_analyzed
indexes :created_at, type: :date, include_in_all: false
indexes :updated_at, type: :date, include_in_all: false
# attachment specific mappings
indexes 'attachment.title', type: :text, store: 'yes'
indexes 'attachment.author', type: :text, store: 'yes'
indexes 'attachment.name', type: :text, store: 'yes'
indexes 'attachment.date', type: :date, store: 'yes'
indexes 'attachment.content_type', type: :text, store: 'yes'
indexes 'attachment.content_length', type: :integer, store: 'yes'
indexes 'attachment.content', term_vector: 'with_positions_offsets', type: :text, store: 'yes'
end
ich eine Anlage Pipeline über curl erstellt haben:
curl -XPUT 'localhost:9200/_ingest/pipeline/attachment' -d'
{
"description" : "Extract attachment information",
"processors" : [
{
"attachment" : {
"field" : "file"
}
}
]
}'
nun vorher eine einfache Media.last.__elasticsearch__.index_document
zusammen mit dem tatsächlichen indizieren eine Aufzeichnung ausreichend gewesen wäre file
über das mapper-attachments
Plugin.
Ich bin mir nicht sicher, wie man das mit ingest-attachment
unter Verwendung einer Pipeline und der elasticsearch-rails
Edelstein.
kann ich die folgende PUT über curl tun:
curl -XPUT 'localhost:9200/assets/media/68?pipeline=attachment' -d'
{ "file" : "my_really_long_encoded_file_string" }'
Dies wird Index der codierten Datei aber offensichtlich nicht wahr Index den Rest der Daten des Modells (oder überschreibt es vollständig, wenn sie zuvor indiziert wurde) . Ich möchte nicht wirklich jedes einzelne Modellattribut zusammen mit der Datei in einen Curl-Befehl einschließen müssen. Gibt es dafür bessere oder einfachere Wege? Bin ich gerade völlig ohne Pipelines und Aufnahme sollte funktionieren?