我正在使用Rails与Sunspot gem和Websolr进行Solr托管。假设我有一个Solr索引的ActiveRecord模型,如下所示:
class User < ActiveRecord::Base
searchable do
text :name
end
end
现在我想从这个模型中删除索引,所以我只删除了这个索引代码(可搜索的块)。索引数据会自动从Solr中删除吗?我假设没有,我需要手动删除/重新索引。我可以重新索引这样的一切:
Sunspot.index
Sunspot.commit
但是重新索引我的整个数据库会很慢。还有另一种 - 更快的方法来停止索引1个模型吗?我没有看到Websolr中的任何界面查看和删除索引中的记录,我似乎无法找到有关如何使用Sunspot从索引中删除模型的任何信息。
答案 0 :(得分:0)
我可以重新索引这样的所有内容:
不,你不能,如果你需要再次重新索引,那么输入rails c
然后
=> Model.index
# User Load (15.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1 [["LIMIT", 50]]
# [2018-02-27 18:45:04 +0600] Start Indexing
# D, [2018-02-27T18:45:05.439714 #15296] DEBUG -- : SOLR Request (762.4ms) [ path=update parameters={} ]
对于删除索引数据,请尝试以下
curl http://localhost:8982/solr/default/update?commit=true -d '<delete><query>*:*</query></delete>'
让我们在网址部分描述
localhost
:是主机名。8982
:您的Solr服务器运行的端口号,如果您混淆了什么是您的端口号,然后打开rails console并键入此puts Sunspot.config.inspect
它将显示您的端口号。 /solr/default/update
:这是执行命令的路径。?commit=true -d
:这是指令。'<delete><query>*:*</query></delete>'
:这就是方法。我找到了这个here,但它对我不起作用,因为端口号和路径不同,我已经编辑了自己的方式并且它运行良好。
我认为这会有所帮助。