0

私は以前、現在非推奨となっている mapper-attachments プラグインを使用していましたが、これは通常のインデックス作成と一緒に使用するのがかなり簡単でした。ingest-attachment がそれに取って代わり、パイプラインなどが必要になったため、これを適切に使用する方法がわかりにくくなっています。

という名前のモデルがMediaありfile、base64 でエンコードされたファイルを含むフィールドがあるとします。そのファイルには次のマッピングがあります。

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

curl を介して添付パイプラインを作成しました。

curl -XPUT 'localhost:9200/_ingest/pipeline/attachment' -d'
{
  "description" : "Extract attachment information",
  "processors" : [
    {
      "attachment" : {
        "field" : "file"
      }
    }
  ]
}'

現在、プラグインを介してMedia.last.__elasticsearch__.index_document実際のレコードと一緒にレコードをインデックス化するには、以前はシンプルで十分でした。filemapper-attachments

ingest-attachmentパイプラインとelasticsearch-rails宝石を使用してこれを行う方法がわかりません。

curl を介して次の PUT を実行できます。

curl -XPUT 'localhost:9200/assets/media/68?pipeline=attachment' -d'
{ "file" : "my_really_long_encoded_file_string" }'

これにより、エンコードされたファイルがインデックス化されますが、明らかに、モデルの残りのデータはインデックス化されません (または、以前にインデックス化されていた場合は完全に上書きされます)。curl コマンドでファイルとともにすべてのモデル属性を含める必要はありません。これを行うためのより良い方法またはより簡単な方法はありますか? パイプラインなしで完全にオフになっていて、取り込みが機能するはずですか?

4

1 に答える 1