Elasticsearch::Transport::Transport::Errors::NotFound ([404] {"error":{"root_cause":[{"type":"index_not_found_exception" 意思是:出现了Elasticsearch的错误,报告未找到索引。

7

在本地环境使用 elasticsearch 时出现了奇怪的错误,请求帮助。谢谢。

Elasticsearch::Transport::Transport::Errors::NotFound ([404] {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"没有这个索引","resource.type":"索引或别名","resource.id":"invoices","index":"invoices"}],"type":"index_not_found_exception","reason":"没有这个索引","resource.type":"索引或别名","resource.id":"invoices","index":"invoices"},"status":404})


1
你能解释一下你正在做什么吗?错误只是简单地说你正在访问的 invoices 索引在你本地的 ES 服务器中不存在。 - Val
@Val 您好,感谢您的回复。实际上,在我的现有项目中已经使用了 ElasticSearch,并且在其他地方都运行良好,但是在“发票”模型中却不行,而我对 ElasticSearch 还很陌生。我已经更新了控制器代码的问题,请您看一下。 - Anand
这告诉我你的本地服务器没有任何数据。也许你忘记先创建索引和加载数据了? - Val
“table”是什么意思?Elasticsearch没有任何表,但它有索引。您是否在数据库中拥有数据,这些数据应该与您的Elasticsearch服务器同步? - Val
是的,那就是我们的想法。你们的项目一般是如何运作的? - Val
显示剩余6条评论
2个回答

14

通过在rails控制台运行以下命令将ES进行索引以解决问题:

-


Model.__elasticsearch__.create_index!
Model.__elasticsearch__.create_index! force: true
Model.import force: true 

3
你只需要执行 Model.import(force: true) - 这将创建索引并导入数据。 - Caleb Keene
这解决了我遇到的和 OP 相似或可能相同的错误。但那些行已经在 rails_helper.rb 中了,我该怎么做才能不手动运行它们而自动工作呢? - Baran Yeni
@CalebKeene 对我来说不是真的。它给了我一个错误。看起来它试图删除一个不存在的索引,并且如果这是您第一次创建该索引,则会出现问题。 - user137717

0

你也可以按照我在rubydoc网站上找到的步骤进行操作:

在你的应用程序中引入任务定义,例如在lib/tasks/elasticsearch.rake文件中:

require 'elasticsearch/rails/tasks/import'

要从您的模型中导入记录,请运行:

bundle exec rake environment elasticsearch:import:model CLASS='ModelName'

或者你可以使用:

rake environment elasticsearch:import:all DIR=app/models

导入所有模型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接