Solr DataImportHandler处理文档数为何多于Core实际文档数
Solr DIH 总处理文档数与Core实际文档数差异原因
这个计数差异是DataImportHandler(DIH)组件本身的统计口径设计导致的,和子实体处理逻辑直接相关,但不存在重复写入文档的问题,具体逻辑如下:
Total Documents Processed的统计规则不是最终写入索引的持久化文档数,而是DIH在整个数据拉取、字段合并阶段生成的所有临时SolrInputDocument对象的总数量。- 配置带子实体的根实体(也就是你的
project实体)时,DIH的处理流程是:- 从主表查询到1条project记录,先生成1个对应主实体的初始临时文档,计数器+1
- 每查询到1条关联的子实体记录,就会基于当前主文档生成新的临时文档对象,把子实体的字段合并进去,每生成1次临时对象,计数器就+1
- 等当前project记录关联的所有子实体都合并完成后,才会把最终的完整文档写入Solr Core
- 举个实际场景:如果单条project记录关联了4条子实体记录,DIH处理这条记录时计数器会累加5(1次初始主文档+4次子实体合并生成的临时文档),但最终Core里只会新增1条对应的project文档。
- 你当前Core内最终文档总数和数据库项目数量完全匹配,说明索引流程完全正常,没有出现子实体被误识别为根实体、重复写入独立文档的故障,这个计数差不需要额外处理。
内容的提问来源于stack exchange,提问作者konikoff
相关产品推荐
相关产品推荐

