Indexing 从PostgreSql中删除一行后如何重新索引solr?

Indexing 从PostgreSql中删除一行后如何重新索引solr?,indexing,solr,Indexing,Solr,我正在从数据库中获取csv转储,并使用solr对表进行索引。如果我从表中删除一行,如何从solr索引中删除该行 您必须已将唯一密钥添加到solr 检查solr.xml以了解相同的信息 获取该行的id并向solr发出查询 在查询中提及id,因为已提及111111 http://localhost:8983/solr/update?stream.body= <delete><query>id:111111</query></delete>&co

我正在从数据库中获取csv转储,并使用solr对表进行索引。如果我从表中删除一行,如何从solr索引中删除该行

您必须已将唯一密钥添加到solr

检查solr.xml以了解相同的信息

获取该行的id并向solr发出查询

在查询中提及id,因为已提及111111

http://localhost:8983/solr/update?stream.body=
<delete><query>id:111111</query></delete>&commit=true
http://localhost:8983/solr/update?stream.body=
id:111111&commit=true
如果要删除索引中的所有项目,只需使用以下查询:

<delete><query>*:*</query></delete>
*:*
欲了解更多信息,请通过


从Postgre数据库中删除条目时。保留一个标志或在另一个名为X的表中创建相同已删除ID的条目。稍后,运行solr调度程序清理solr中已删除的条目。通过将这些ID从tabel X传递给solr,在solr上运行删除查询,并从solr中删除条目。

有几种策略:

  • 通过在原始数据库中标记已删除的ID并在DataImportHandler中发送特殊密钥,了解已删除的ID
  • 定期删除所有内容并从头开始重新编制索引,这样遗留记录就会消失
  • 自动为每个记录(例如,在UpdateRequestProcessor链中)添加一个带有“日期索引”的字段,然后在重新索引结束时,运行查询以删除任何具有旧“日期索引”的记录,因为它表明该记录尚未更新

  • 我问的是,如果有人从数据库中删除5-6行,我们如何知道删除行的ID是什么,并从Solr中删除它们?例如,我从数据库中索引了10行。有人从数据库中删除了2行。当我重新索引Solr时,它将更新8行,但不会影响数据库中已删除的2行。如何查找已删除的行并将其从solr Index中删除当您从表中成功删除这些条目时,然后使用solr查询中提到的唯一id调用solr以从solr中删除该条目从Postgre数据库中删除这些条目时。保留一个标志或在另一个表中输入相同的标志。稍后,运行solr调度程序清理数据库中已删除的条目。在solr上运行delete查询,将这些id传递给它,并从solr中删除条目。我在应用程序中也实现了同样的功能。当我删除应用程序数据库中的条目时,我会从solr索引中删除该条目。它确保我的数据库中删除的entried也从solr中删除