【问题标题】:Why is the elasticsearch index not updating in my mongo rails app?为什么我的 mongo rails 应用程序中的弹性搜索索引没有更新?
【发布时间】:2012-05-22 11:44:26
【问题描述】:

我在我的 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)

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid elasticsearch tire


    【解决方案1】:

    您是否提供了to_indexed_json 的兼容实现,如Tire 的自述文件中所述?

    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
    

    【讨论】:

      猜你喜欢
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多