1

Elasticsearch&Tiregemを使用して多数のドキュメントのインデックスを作成しようとしています。レコードが完全ではなく、参照されていないまれな場合を除いて、インデックス作成はうまく機能していますfilename。そのような場合、レコードには何もインデックスが付けられず、Elasticsearchは。をスローしNullPointerExceptionます。

私はJavaを知りませんが、Elasticsearchがレコードの残りの部分を正常にインデックス付けし、whereリターンをバイパスするように、Attachment Typeプラグインに何かを渡す方法があるかどうか疑問に思っていますか?:type => 'attachment'attachmentnull

試してみ"attachment" : {"type" : "attachment", "null_value" : "missing_file"}ました(またはタイヤの用語では:)indexes :attachment, :type => 'attachment', :null_value => "missing_file"が、これは何の違いもないようです。

#app/models/article.rb
class Article < ActiveRecord::Base
  include Tire::Model::Search
  include Tire::Model::Callbacks

  attr_accessible :title, :content, :published_on, :filename

  mapping do
    indexes :id, :type =>'integer'
    indexes :title
    indexes :content
    indexes :published_on, :type => 'date'
    indexes :attachment, :type => 'attachment', :null_value => 'missing_file'  # <== no worky
  end

  def to_indexed_json
    to_json(:methods => [:attachment])
  end

  def attachment
    if filename.present?
       path_to_pdf = "/Volumes/HardDisk/sample_pdfs/#{filename}.pdf"
       Base64.encode64(open(path_to_pdf) { |pdf| pdf.read })
    end
  end
end


#Elasticsearch log:
[2012-06-29 09:01:15,515][DEBUG][action.bulk              ] [Skunge the Laxidazian Troll] [articles][4] failed to execute bulk item (index) index {[articles][article][10], source[{"content":"this title is fluff","created_at":"2012-06-27T22:02:43Z","filename":null,"id":10,"published_on":"2012-06-27","title":"Test title","updated_at":"2012-06-27T22:02:43Z","attachment":null}]}
java.lang.NullPointerException
4

0 に答える 0