Ruby On Rails Searchkick宝石错误:“ NGram令牌生成器中的max_gram和min_gram之间的差异必须小于或等于:[1]

时间:2019-10-04 13:12:04

标签: ruby-on-rails ruby elasticsearch

所以我想在RoR应用程序中使用searchkick gem。我只是遵循github页面上的自述文件。

https://github.com/ankane/searchkick

但是当我运行Product.reindex时,它会引发以下错误:

Elasticsearch::Transport::Transport::Errors::BadRequest: [400] {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"The difference between max_gram and min_gram in NGram Tokenizer must be less than or equal to: [1] but was [49]. This limit can be set by changing the [index.max_ngram_diff] index level setting."}],"type":"illegal_argument_exception","reason":"The difference between max_gram and min_gram in NGram Tokenizer must be less than or equal to: [1] but was [49]. This limit can be set by changing the [index.max_ngram_diff] index level setting."},"status":400}
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/transport/base.rb:132:in `__raise_transport_error'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/transport/base.rb:224:in `perform_request'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/transport/http/faraday.rb:20:in `perform_request'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/client.rb:111:in `perform_request'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/elasticsearch-api-1.0.6/lib/elasticsearch/api/namespace/common.rb:21:in `perform_request'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/elasticsearch-api-1.0.6/lib/elasticsearch/api/actions/indices/create.rb:77:in `create'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/searchkick-2.5.0/lib/searchkick/index.rb:14:in `create'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/searchkick-2.5.0/lib/searchkick/index.rb:184:in `create_index'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/searchkick-2.5.0/lib/searchkick/index.rb:233:in `reindex_scope'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/searchkick-2.5.0/lib/searchkick/model.rb:72:in `searchkick_reindex'
    from (irb):5
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/railties-4.1.16/lib/rails/commands/console.rb:90:in `start'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/railties-4.1.16/lib/rails/commands/console.rb:9:in `start'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/railties-4.1.16/lib/rails/commands/commands_tasks.rb:69:in `console'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/railties-4.1.16/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
    from /home/Hendrik/.rvm/gems/ruby-2.3.7/gems/railties-4.1.16/lib/rails/commands.rb:17:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

它说我可以在级别设置中更改max_gram,min_gram和max_ngram_diff的值。但是我不知道什么级别设置或在哪里可以找到它。

1 个答案:

答案 0 :(得分:0)

您似乎正在使用旧版本的Searchkick。尝试升级到最新版本。

bundle update searchkick