Searchkick / Elasticsearch-根映射定义具有不受支持的参数

问题描述 投票:0回答:1

我在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个回答
0
投票

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

我遇到此错误,并通过将我的Elasticsearch从7.x降级到6.8.4来解决。是runninng SearchKick(3.1.2)。

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

curl -XGET 'localhost:9200'

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

brew install [email protected]

重新启动弹性搜索服务!

© www.soinside.com 2019 - 2024. All rights reserved.