Rails: Elasticsearch 已索引已从数据库中删除的记录
Rails: Elasticsearch has indexed records that have been removed from database
嗨,我遇到了 Elasticsearch 问题。
我有一个模型,我正在使用
include Tire::Model::Search
include Tire::Model::Callbacks
用于索引创建的记录,但出于某种原因,当我测试搜索时它显示 404 页面未找到错误
然后检查服务器日志,我注意到 elasticsearch 索引了我的数据库中不存在的数据,这意味着我删除了该模型的一些记录,但 elasticsearch 仍然索引了这些记录,所以当我尝试搜索时它现在找到了那些不在我的数据库中的记录,所以这就是为什么我得到该页面未找到错误的原因,我也在控制台中尝试并得到错误
ActiveRecord::RecordNotFound: Couldn't find Ofert with 'id'=3
那么如何在elasticsearch中保持记录与索引数据同步呢?我的意思是,我希望当我删除一条记录时,它也应该从 elasticsearch
的索引中删除
谢谢你的帮助
嗯,您要做的就是删除索引并重新创建它们,但是我们不建议在生产中这样做。
在这种情况下,首先删除您想要的模型的所有索引ofert
Tire.index("*oferts").delete
那么你会得到如下异常:IndexMissingException[[products] missing]
那是因为你正在寻找一个不存在的索引,那么你只需要重新创建它:
rake environment tire:import CLASS='Ofert'
以上命令将创建索引并将所有已创建的记录导入 ElasticSearch 索引。
希望对您有所帮助。
嗨,我遇到了 Elasticsearch 问题。
我有一个模型,我正在使用
include Tire::Model::Search
include Tire::Model::Callbacks
用于索引创建的记录,但出于某种原因,当我测试搜索时它显示 404 页面未找到错误
然后检查服务器日志,我注意到 elasticsearch 索引了我的数据库中不存在的数据,这意味着我删除了该模型的一些记录,但 elasticsearch 仍然索引了这些记录,所以当我尝试搜索时它现在找到了那些不在我的数据库中的记录,所以这就是为什么我得到该页面未找到错误的原因,我也在控制台中尝试并得到错误
ActiveRecord::RecordNotFound: Couldn't find Ofert with 'id'=3
那么如何在elasticsearch中保持记录与索引数据同步呢?我的意思是,我希望当我删除一条记录时,它也应该从 elasticsearch
的索引中删除谢谢你的帮助
嗯,您要做的就是删除索引并重新创建它们,但是我们不建议在生产中这样做。
在这种情况下,首先删除您想要的模型的所有索引ofert
Tire.index("*oferts").delete
那么你会得到如下异常:IndexMissingException[[products] missing]
那是因为你正在寻找一个不存在的索引,那么你只需要重新创建它:
rake environment tire:import CLASS='Ofert'
以上命令将创建索引并将所有已创建的记录导入 ElasticSearch 索引。
希望对您有所帮助。