SOLR 数据导入处理程序跳过或忽略请求
SOLR data import handler skips or ignores request
我正在使用 SOLR 6.0.0,我使用数据导入处理程序来处理从 MySQL 到 SOLR 的索引。
我的 db-data-config.xml 文件中有以下查询
<entity name="user" query="SELECT ID, A, B, C FROM `USER` U WHERE U.ID = '${dataimporter.request.id}' OR '' = '${dataimporter.request.id}'">
<field column="A" name="A" ....
.......
</entity>
基本上如果我传递 id,它只会索引那个 ID,否则它会索引整个 table。
现在问题是,
我经常插入更新。
第一次插入后,我向单个 id/doc/row 的索引发送请求,几毫秒后记录得到更新,因此我再次发送请求以索引相同的 ID。现在 SOLR 似乎跳过了第二个请求,因为我可以看到两个请求都通过了,但是 SOLR 中没有更新的数据。
非唯一项目也会发生这种情况(不同的 ID)。我同时请求两个或三个数据导入和 solr skips/ignores 第二个请求。
我用 http 方法请求它,发送以下查询,
http://localhost:8983/solr/user/dataimport?command=full-import&verbose=false&clean=false&commit=true&optimize=false&core=user&id=1
如果 DIH 处理程序正忙 运行 请求,将忽略您发送给它的任何其他请求。
所以你必须回顾你关于 how/when 调用 DIH 的方法,一些想法:
- 正如您所说的那样,您的编辑频率很高,通过 id 重新索引似乎不是最好的选择,基于时间的东西似乎更具可扩展性。您可以添加一个 'lastUpdated' 列(当该行为 created/updated 时通过触发器填充),然后每隔 X(1 分钟、5 分钟……只要您负担得起)调用重建索引。如果忽略一个请求,则不会丢失任何数据,本应重新编制索引的行将在下一个运行的增量上重新编制索引。
- 如果您想保留基于身份的方法,您需要:\
- 等到上一个 DIH 请求完成后再发送新的
- 留出一些缓冲区,您可以在等待期间继续添加 ID
- 允许在您的配置中使用多个 ID
我正在使用 SOLR 6.0.0,我使用数据导入处理程序来处理从 MySQL 到 SOLR 的索引。
我的 db-data-config.xml 文件中有以下查询
<entity name="user" query="SELECT ID, A, B, C FROM `USER` U WHERE U.ID = '${dataimporter.request.id}' OR '' = '${dataimporter.request.id}'">
<field column="A" name="A" ....
.......
</entity>
基本上如果我传递 id,它只会索引那个 ID,否则它会索引整个 table。
现在问题是,
我经常插入更新。
第一次插入后,我向单个 id/doc/row 的索引发送请求,几毫秒后记录得到更新,因此我再次发送请求以索引相同的 ID。现在 SOLR 似乎跳过了第二个请求,因为我可以看到两个请求都通过了,但是 SOLR 中没有更新的数据。
非唯一项目也会发生这种情况(不同的 ID)。我同时请求两个或三个数据导入和 solr skips/ignores 第二个请求。
我用 http 方法请求它,发送以下查询,
http://localhost:8983/solr/user/dataimport?command=full-import&verbose=false&clean=false&commit=true&optimize=false&core=user&id=1
如果 DIH 处理程序正忙 运行 请求,将忽略您发送给它的任何其他请求。
所以你必须回顾你关于 how/when 调用 DIH 的方法,一些想法:
- 正如您所说的那样,您的编辑频率很高,通过 id 重新索引似乎不是最好的选择,基于时间的东西似乎更具可扩展性。您可以添加一个 'lastUpdated' 列(当该行为 created/updated 时通过触发器填充),然后每隔 X(1 分钟、5 分钟……只要您负担得起)调用重建索引。如果忽略一个请求,则不会丢失任何数据,本应重新编制索引的行将在下一个运行的增量上重新编制索引。
- 如果您想保留基于身份的方法,您需要:\
- 等到上一个 DIH 请求完成后再发送新的
- 留出一些缓冲区,您可以在等待期间继续添加 ID
- 允许在您的配置中使用多个 ID