2

我在我的 rails 3.2 mongo 应用程序中使用了轮胎 gem,但我遇到了 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)
4

1 回答 1

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
于 2012-05-21T20:38:54.403 回答