Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails “如何修复”;“非法参数例外”;为Rails模型创建Elasticsearch索引时?_Ruby On Rails_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Ruby On Rails,elasticsearch" /> elasticsearch,Ruby On Rails,elasticsearch" />

Ruby on rails “如何修复”;“非法参数例外”;为Rails模型创建Elasticsearch索引时?

Ruby on rails “如何修复”;“非法参数例外”;为Rails模型创建Elasticsearch索引时?,ruby-on-rails,elasticsearch,Ruby On Rails,elasticsearch,我正在尝试将Elasticsearch集成到我的rails应用程序中。当我尝试在我的模型上进行导入时,问题就出现了视频。弹性搜索。导入。 所以,在rails控制台中,我运行了视频。我得到这个错误: myflix_开发不存在,无法导入到中。使用创建索引!或者:强制选项创建它。 然后我运行了视频。\uuuu elasticsearch\uuuuu。创建索引和视频。弹性搜索。创建索引!(force:true)并且它们都返回了非法参数异常的相同错误: PUT http://localhost:9200

我正在尝试将Elasticsearch集成到我的rails应用程序中。当我尝试在我的模型上进行导入时,问题就出现了视频。弹性搜索。导入。

所以,在rails控制台中,我运行了视频。我得到这个错误: myflix_开发不存在,无法导入到中。使用创建索引!或者:强制选项创建它。

然后我运行了视频。\uuuu elasticsearch\uuuuu。创建索引视频。弹性搜索。创建索引!(force:true)并且它们都返回了非法参数异常的相同错误:

 PUT http://localhost:9200/myflix_development [status:400, request:0.027s, query:N/A]
2019-06-08 11:18:29 +0800: > {"settings":{},"mappings":{"_doc":{"properties":{}}}}
2019-06-08 11:18:29 +0800: < {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."}],"type":"illegal_argument_exception","reason":"The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."},"status":400}
2) 包括一个初始值设定项:app/config/initializers/elasticsearch.rb

Elasticsearch::Model.client =
  if Rails.env.staging? || Rails.env.production?
    Elasticsearch::Client.new url: ENV['SEARCHBOX_URL']
  elsif Rails.env.development?
    Elasticsearch::Client.new log: true
  else
    Elasticsearch::Client.new
  end
3) 在我的视频模型中包含elasticsearch

class Video < ActiveRecord::Base
  include Elasticsearch::Model
  index_name ["myflix", Rails.env].join("_")
  ...
end
任何帮助都将不胜感激

编辑 1) 试图在我的模型中进行手动映射

class Video < ActiveRecord::Base
    include Elasticsearch::Model

    settings index: { number_of_shards: 1 } do
    mappings dynamic: 'false' do
      indexes :title, type: 'text'
      indexes :description, type: 'text'
    end
  end
...
end
class-Video
根据您的错误,我认为您使用的是elasticsearch 7。类型
\u doc
在索引查询中指定,但类型为


您可以尝试更新elasticsearch库以匹配es7,或者按照错误消息中的建议,您可以在映射中使用参数
include_type_name

您可以通过设置
document_type
来显式定义
elasticsearch模型
传递给elasticsearch的文档类型。例如:

class Video < ActiveRecord::Base
  include Elasticsearch::Model
  index_name ["myflix", Rails.env].join("_")
  document_type "video"
  ...
end
class-Video
您使用的名称是任意的。只要不是
\u doc
,就不应该在v7及以上版本上遇到此错误。

由于ElasticSearch引擎无法分析保留关键字,因此出现了“非法参数异常”。属性被视为映射部分内的根字段。通过排除“\u doc”关键字,按如下方式改革请求:

PUT {INDEX_NAME} {"settings":{},"mappings":{"properties":{}}}}

是的,我正在使用ES 7.1.0。我的问题中包含了我的gemfile.lock文件。我想有几件事我还不清楚:1)类型_doc是在索引查询中指定的。-在我的索引查询中,在哪里可以停用此类型的文档?我在尝试导入时没有指定任何内容。2) 您可以尝试更新elasticsearch库以匹配es7-我直接从网站下载es7。它不是已经更新了吗?3) 您可以在映射中使用参数include_type_name。-不知道怎么做。我如何手动创建映射并指定它?我实际上也将ES版本降级为ES6。当我尝试在rails控制台中创建索引时:Video.\uu elasticsearch\uuuu.import我得到了这个错误:Video.\uu elasticsearch\uuuu.create\u index!Elasticsearch::Transport::Transport::Errors::BadRequest:[400]{“错误”:{“根本原因”:[{“类型”:“无效类型名称异常”,“原因”:“映射类型名称[doc]不能以“”}(下划线)],“类型”:“无效类型名称异常”,“原因”:“映射类型名称[doc]不能以“”(下划线)}开头,”状态:400}我甚至不确定我在哪里指定了以下划线开头的映射类型名称[doc]。使用ELasticsearch 6.0.1,我查找了如何进行映射,并将代码包含在我的原始帖子中。尽管这样做了,我仍然会遇到相同的错误,映射类型名称[doc]不能以“”“}]开头,所以很抱歉抛出了这么多额外的注释!这个问题真的困扰着我
class Video < ActiveRecord::Base
  include Elasticsearch::Model
  index_name ["myflix", Rails.env].join("_")
  document_type "video"
  ...
end
PUT {INDEX_NAME} {"settings":{},"mappings":{"properties":{}}}}