【问题标题】:Searchkick/Elasticsearch - Root mapping definition has unsupported parametersSearchkick/Elasticsearch - 根映射定义具有不受支持的参数
【发布时间】:2019-11-14 14:56:54
【问题描述】:

我在 Heroku 上有一个 Rails API,在重新索引类时遇到以下问题。

$ heroku run rake searchkick:reindex CLASS=User

并得到以下错误

Elasticsearch::Transport::Transport::Errors::BadRequest: [400] {"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"Root mapping definition has unsupported parameters: [_default_ : {_routing={}, dynamic_templates=[{string_template={mapping={ignore_above=30000, type=keyword, fields={analyzed={analyzer=searchkick_index, index=true, type=text}}}, match_mapping_type=string, match=*}}], properties={}}]"}],"type":"mapper_parsing_exception","reason":"Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters: [_default_ : {_routing={}, dynamic_templates=[{string_template={mapping={ignore_above=30000, type=keyword, fields={analyzed={analyzer=searchkick_index, index=true, type=text}}}, match_mapping_type=string, match=*}}], properties={}}]","caused_by":{"type":"mapper_parsing_exception","reason":"Root mapping definition has unsupported parameters: [_default_ : {_routing={}, dynamic_templates=[{string_template={mapping={ignore_above=30000, type=keyword, fields={analyzed={analyzer=searchkick_index, index=true, type=text}}}, match_mapping_type=string, match=*}}], properties={}}]"}},"status":400}

我的用户类有以下内容

class User < ApplicationRecord
    searchkick settings: { 
        number_of_shards: 1,
        number_of_replicas: 1,
        max_ngram_diff: 49,
        max_shingle_diff: 4
        }
end

我正在添加 max_ngram_diff 和 max_shingle_diff,因为这解决了不同的问题。但是,我也不确定 max_ngram_diff 和 max_shingle_diff 的值是否正确。

来自我的 Gemfile.lock

searchkick (2.5.0)
      activemodel (>= 4.1)
      elasticsearch (>= 1)
      hashie

elasticsearch (6.2.0)
      elasticsearch-api (= 6.2.0)
      elasticsearch-transport (= 6.2.0)
    elasticsearch-api (6.2.0)
      multi_json
    elasticsearch-transport (6.2.0)
      faraday
      multi_json

你知道该怎么做吗?

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick heroku-api bonsai-elasticsearch


    【解决方案1】:

    此错误是由于版本与 ElasticSearch 不兼容造成的。 IE。最新版本的 Searchkick(即 v4.1),需要 ElasticSearch v7.4.0

    我遇到了这个错误并通过将我的 Elasticsearch 从 7.x 降级到 6.8.4 来解决它。正在运行 SearchKick(3.1.2)。

    要检查您机器上的 ElasticSearch 版本,请运行以下命令:

    curl -XGET 'localhost:9200'
    

    通过Gemfile 检查您机器上运行的searchkick 版本。从您的 gemfile 中,您需要 ElasticSearch v6.2.0 要安装特定版本的 ElasticSearch,请运行以下命令

    brew install elasticsearch@6.2.0
    

    重启你的 elasticsearch 服务!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多