Reputation: 2760
I'm using the tire gem in my rails 3.2 mongo app and I am having issues with elasticsearch not updating. I included my question model below.
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
I create new questions by running Question.create(:question => "What day is it?", :answer => "Monday")
and it does not come when I search Question.tire.search( "What day is it?" )
. Older questions are showing up, but none of the new ones seem to be adding to the index.
Update
The following error message is showing in the log:
[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)
Upvotes: 3
Views: 1506
Reputation: 14419
Did you provide a compatible implementation of to_indexed_json
as outlined in Tire's Readme?
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
Upvotes: 2