首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Searchkick/Elasticsearch - Root映射定义包含不支持的参数

Searchkick/Elasticsearch - Root映射定义包含不支持的参数
EN

Stack Overflow用户
提问于 2019-11-14 22:56:55
回答 1查看 828关注 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}

我的User类具有以下内容

代码语言:javascript
复制
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

代码语言:javascript
复制
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

你知道该怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-16 06:44:20

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

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

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

代码语言:javascript
复制
curl -XGET 'localhost:9200'

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

代码语言:javascript
复制
brew install elasticsearch@6.2.0

重新启动elasticsearch服务!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58859712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档