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

时间:2015-08-31 10:21:40

标签: indexing solr

我从我的数据库中获取csv转储并使用solr索引表。如果我从表中删除了一行,如何从Solr索引中删除该行?

2 个答案:

答案 0 :(得分:1)

您必须为solr添加唯一键。

检查你的solr.xml是否相同。

获取该行的id并将查询激发到solr

提到查询中的id,因为提到了111111。

http://localhost:8983/solr/update?stream.body=
<delete><query>id:111111</query></delete>&commit=true

如果要删除索引中的所有项目,只需使用此查询:

<delete><query>*:*</query></delete>

了解更多信息,请浏览

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

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

答案 1 :(得分:1)

有几种策略:

  1. 通过在原始数据库中标记删除的ID并在DataImportHandler中发送特殊的$deleteDocById密钥来了解删除的ID是什么
  2. 定期删除所有内容并从头开始重新索引,这样传统记录就会消失
  3. 为每条记录自动添加带有“date-indexed”的字段(例如在UpdateRequestProcessor链中),然后在重建索引结束时运行查询以删除任何旧的“日期索引”的记录它表示它尚未更新。