-1

Я ранее использовал плагин mapper-attachments, который теперь устарел, что было довольно легко использовать вместе с обычной индексацией. Теперь, когда приложение ingest-attachment заменило его и требует конвейера и т. Д., Он стал запутывать, как правильно его использовать.Каким образом вы используете плагин для вставки с помощью elasticsearch-rails?

Допустим, у меня есть модель с именем 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 -XPUT 'localhost:9200/_ingest/pipeline/attachment' -d' 
{ 
    "description" : "Extract attachment information", 
    "processors" : [ 
    { 
     "attachment" : { 
     "field" : "file" 
     } 
    } 
    ] 
}' 

Теперь, ранее простой Media.last.__elasticsearch__.index_document было бы достаточно, чтобы индексировать запись наряду с фактическим file через плагин mapper-attachments.

Я не уверен, как это сделать с помощью ingest-attachment с использованием трубопровода и драгоценного камня elasticsearch-rails.

я могу сделать следующий PUT через завиток:

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

Этот индекс зашифрованного файла, но очевидно, что это не индексирует остальные данные модели (или переписывает его полностью, если он был ранее индексируются) , Я действительно не хочу включать каждый атрибут модели вместе с файлом в команде curl. Есть ли лучшие или более простые способы сделать это? Я просто полностью отключен от трубопроводов, и прием пищи должен работать?

ответ

0

Наконец-то понял это. Мне нужно было обновить ES gems, в частности elasticsearch-api.

С отображений и трубопроводов, установленных как и я, вы легко можете просто сделать:

Media.last.__elasticsearch__.index_document pipeline: :attachment

или

Media.last.__elasticsearch__.update_document pipeline: :attachment

Этот индекс будет все правильно, и ваш файл будет надлежащим образом анализируется и индексируется через проходной трубопровод.