可以从Solr索引中的文档中删除字段吗?

时间:2011-01-26 08:42:09

标签: java solr field

我有一个很大的索引,在索引过程中出现了错误。因此,为了避免重新索引需要几天,我想简单地删除特定字段和重新索引。有什么建议吗?

6 个答案:

答案 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>

源:https://wiki.apache.org/solr/UpdateXmlMessages

答案 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文件中配置该字段。