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

u3r8eeie  于 2022-09-27  发布在  Solr
关注(0)|答案(7)|浏览(309)

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

dly7yett

dly7yett1#

如果您使用的是Solr4,则可以使用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}}]'
yrefmtwq

yrefmtwq2#

如果存储了其余字段,即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

mu0hgdu0

mu0hgdu03#

你不能。解决方案是获取文档,暂时存储在内存中,删除它,更新所需字段(删除、添加),然后将文档添加回索引。

oo7oh9g9

oo7oh9g94#

可以按id删除索引文档。如果要通过删除字段来更改架构,则必须重新编制索引。

8zzbczxx

8zzbczxx5#

您可以使用delete命令和如下查询删除所有索引:

java -Ddata=args -Dcommit=yes -jar post.jar "<delete><query>*:*</query></delete>"

使用参数-Dcommit强制更新索引,因此,当您不需要时,请小心不要删除所有文档。

t9eec4r0

t9eec4r06#

可以删除Solr中某个字段的索引值,但不能删除该字段。
如果确实要在索引时删除特定字段,则应在模式中配置该字段。索引文档之前的xml文件。

r6vfmomb

r6vfmomb7#

对于solr 8.11.2,

curl 'http://localhost:8983/solr/solr/schema' -d '{"delete-field":{"name":"${field_name}"}}'

相关问题