2012-05-15 2 views
1

나는 내 레일 3.2 mongo 앱에서 타이어 보석을 사용하고 있으며 elasticsearch를 업데이트하지 않는 문제가 있습니다. 나는 아래에 나의 질문 모델을 포함시켰다.내 mongo rails 앱에서 elasticsearch 색인이 업데이트되지 않는 이유는 무엇입니까?

class Question 

    include Mongoid::Document 
    include Mongoid::Timestamps 
    include Mongoid::Paranoia 

    field :question, :type => String 
    field :answer, :type => Array 
    field :tags,  :type => Array 
    field :views,  :type => Integer, :default => 0 

    include Tire::Model::Search 
    include Tire::Model::Callbacks 

    mapping do 
    indexes :question, :analyzer => 'snowball', :boost => 100 
    indexes :tags,  :analyzer => 'keyword' 
    end 

end 

나는 Question.create(:question => "What day is it?", :answer => "Monday")을 실행하여 새로운 질문을 만들고 내가 Question.tire.search("What day is it?")를 검색 할 때이되지 않습니다. 이전 질문은 나타나지만 새로운 질문 중 하나도 색인에 추가되지 않는 것 같습니다.

업데이트

다음과 같은 오류 메시지가 로그에 표시됩니다 : 타이어의 추가 정보에 설명 된대로

[2012-05-14 19:42:41,725][DEBUG][action.index    ] [Century, Turner] [questions][4], node[JKD6HjRKQuqgwuQyJTl1qA], [P], s[STARTED]: 
Failed to execute [index {[questions][question][4fb1a677e0f5754d2e000004], source[_id=4fb1a677e0f5754d2e000004&answer[]=Monday&created_at=2012-05-14%2019%3A42%3A31%20-0500&deleted_at=&question=What%20day%20is%20it%3F&tags=&updated_at=2012-05-14%2019%3A42%3A31%20-0500&views=0]}] 
org.elasticsearch.ElasticSearchParseException: Failed to derive xcontent from (offset=0, length=193): [95, 105, 100, 61, 52, 102, 98, 49, 97, 54, 55, 55, 101, 48, 102, 53, 55, 53, 52, 100, 50, 101, 48, 48, 48, 48, 48, 52, 38, 97, 110, 115, 119, 101, 114, 91, 93, 61, 77, 111, 110, 100, 97, 121, 38, 99, 114, 101, 97, 116, 101, 100, 95, 97, 116, 61, 50, 48, 49, 50, 45, 48, 53, 45, 49, 52, 37, 50, 48, 49, 57, 37, 51, 65, 52, 50, 37, 51, 65, 51, 49, 37, 50, 48, 45, 48, 53, 48, 48, 38, 100, 101, 108, 101, 116, 101, 100, 95, 97, 116, 61, 38, 113, 117, 101, 115, 116, 105, 111, 110, 61, 87, 104, 97, 116, 37, 50, 48, 100, 97, 121, 37, 50, 48, 105, 115, 37, 50, 48, 105, 116, 37, 51, 70, 38, 116, 97, 103, 115, 61, 38, 117, 112, 100, 97, 116, 101, 100, 95, 97, 116, 61, 50, 48, 49, 50, 45, 48, 53, 45, 49, 52, 37, 50, 48, 49, 57, 37, 51, 65, 52, 50, 37, 51, 65, 51, 49, 37, 50, 48, 45, 48, 53, 48, 48, 38, 118, 105, 101, 119, 115, 61, 48] 
    at org.elasticsearch.common.xcontent.XContentFactory.xContent(XContentFactory.java:147) 
    at org.elasticsearch.common.xcontent.XContentHelper.createParser(XContentHelper.java:49) 
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:431) 
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:417) 
    at org.elasticsearch.index.shard.service.InternalIndexShard.prepareIndex(InternalIndexShard.java:311) 
    at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:202) 
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:529) 
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:427) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 

답변

2

당신이 to_indexed_json의 호환 구현을 제공 했습니까?

class Article 
    include Mongoid::Document 
    field :title, :type => String 
    field :content, :type => String 

    include Tire::Model::Search 
    include Tire::Model::Callbacks 

    # These Mongo guys sure do get funky with their IDs in +serializable_hash+, let's fix it. 
    # 
    def to_indexed_json 
    self.to_json 
    end 

end