searchkick reindex 在暂存环境中不起作用

searchkick reindex not working in staging env

在开发环境中Moment.reindex搜索正常,但在暂存环境中出错:

2.3.1 :002 > Moment.reindex
Elasticsearch::Transport::Transport::Errors::BadRequest: [400] {"error":{"root_cause":[{"type":"parse_exception","reason":"Failed to parse content to map"}],"type":"parse_exception","reason":"Failed to parse content to map","caused_by":{"type":"json_parse_exception","reason":"Duplicate field 'moment'\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@1e0d7046; line: 1, column: 2720]"}},"status":400}

使用相同的 ES 稳定环境。

我的时刻class:

class Moment
  include Mongoid::Document
  searchkick inheritance: true, callbacks: :async, merge_mappings: true, mappings: {
moment: {
  properties: {
    text: {
      type: "text",
      # analyzer: "ik_max_word",
      fields: {
        analyzed: {
          type: "text",
          analyzer: "ik_max_word"
        }
      }
    }
  }
}

}}

GET /_cat/indices?v
health status index                                 
yellow open   moments_development_20180223203756302        
yellow open   moments_staging      

这是 how mappings were merged 的一个问题。它已在最新版本的 Searchkick 中修复。