我有一个很大的索引,在索引过程中出现了错误。因此,为了避免重新索引需要几天,我想简单地删除特定字段和重新索引。有什么建议吗?
答案 0 :(得分:8)
如果您使用的是Solr 4,则可以使用AtomicUpdate http://wiki.apache.org/solr/Atomic_Updates 更容易删除字段。例如:
curl http://localhost:8983/solr/update?commit=true -H 'Content-type:application/json' --data-binary '[{"id": "630911fa-711a-3944-b1d2-cda6857f9827", "field_to_be_removed": {"set": null}}]'
答案 1 :(得分:5)
你做不到。解决方案是获取文档,临时存储在内存中,删除它,更新必填字段(删除,添加),然后将文档添加回索引。
答案 2 :(得分:5)
如果您的其他字段存储为stored="true "
,则可以执行此操作。如下设置空值。
<add>
<doc>
<!-- your unique key field -->
<field name="employeeId">05991</field>
<!-- what ever field you want to delete -->
<field name="skills" update="set" null="true" />
</doc>
</add>
答案 3 :(得分:4)
您可以通过它的ID删除索引文档。如果您想通过删除字段来更改架构,那么是的,您必须重新编制索引。
答案 4 :(得分:2)
您可以使用命令delete和以下查询删除所有索引:
java -Ddata=args -Dcommit=yes -jar post.jar "<delete><query>*:*</query></delete>"
使用参数-Dcommit
强制更新索引,因此,请注意不要在不需要时删除所有文档。
答案 5 :(得分:0)
您可以删除索引值w.r.t. Solr中的一个字段,但不是字段。
如果您确实要在编制索引时删除特定字段,则应在索引文档之前在schema.xml文件中配置该字段。