繁体   English   中英

ParentDeltaQuery 不更新 solr dataimporthandler 中的文档

[英]ParentDeltaQuery not updating document in solr dataimporthandler

我正在使用 solr 的 dataimporthandler 来索引 solr 中的 postgres 数据,我的文档结构有一个父实体和相应的子实体:这里是 data-config.xml 文件:

<entity name="assessment" pk="assm_pk" 
    query="select assm_pk,'building' as table_name,assm_no,own_name,oaadhar_no,floor_ar,prp_usg,bld_id,ulb_id from assessment_table"
deltaImportQuery="SELECT assm_pk,'building' as table_name,assm_no,own_name,oaadhar_no,floor_ar,ulb_id,prp_usg,bld_id from assessment_table WHERE assm_pk='${dih.delta.assm_pk}'"
deltaQuery="select assm_pk from assessment_table where update_ts &gt; '${dih.last_index_time}'"
>
 <field column="table_name" name="table_name"/>
 <field column="assm_no" name="assm_no"/>
 <field column="own_name" name="own_name"/>
 <field column="oaadhar_no" name="aadhar_no"/>
 <field column="floor_ar" name="floor_area"/>
 <field column="prp_usg" name="prp_usg"/>
 <field column="ulb_id" name="ulb_id"/>
 <field column="assm_pk" name="assm_pk"/>
 <entity name="building" pk="id" query="select id,bld_id,latitude,longitude,road_name from v2_buildings where CAST(bld_id as text) = '${assessment.bld_id}'"
        deltaQuery="select id,bld_id from v2_buildings limit 100"
        parentDeltaQuery="select assm_pk from assessment_table p where cast(p.bld_id as text) = '${dih.delta.bld_id}'">
        <field column="bld_id" name="bld_id"/>
        <field column="latitude" name="latitude"/>
        <field column="longitude" name="longitude"/>
        <field column="road_name" name="road_name"/>
 </entity>

当我运行 delta-import 命令时,至少有 100 个文档(与子实体构建相关的文档应该更新)但 solr 没有更新任何文档,这是最终状态:

{
  "responseHeader": {
    "status": 0,
    "QTime": 0
  },
  "initArgs": [
    "defaults",
    [
      "config",
      "db-data-config.xml"
    ]
  ],
  "command": "status",
  "status": "idle",
  "importResponse": "",
  "statusMessages": {
    "Total Requests made to DataSource": "103",
    "Total Rows Fetched": "100",
    "Total Documents Processed": "0",
    "Total Documents Skipped": "0",
    "Delta Dump started": "2018-02-20 16:48:43",
    "Identifying Delta": "2018-02-20 16:48:43",
    "Deltas Obtained": "2018-02-20 16:48:43",
    "Building documents": "2018-02-20 16:48:43",
    "Total Changed Documents": "0",
    "": "Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.",
    "Committed": "2018-02-20 16:48:43",
    "Time taken": "0:0:0.290"
  }
}

以下是 delta-import 命令的相关日志:

    2018-02-20 16:48:43.692 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.JdbcDataSource Time taken for getConnection(): 2
2018-02-20 16:48:43.694 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.DocBuilder Completed ModifiedRowKey for Entity: building rows obtained : 100
2018-02-20 16:48:43.694 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.DocBuilder Completed DeletedRowKey for Entity: building rows obtained : 0
2018-02-20 16:48:43.694 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.SqlEntityProcessor Running parentDeltaQuery for Entity: building
2018-02-20 16:48:43.698 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.SqlEntityProcessor Running parentDeltaQuery for Entity: building
20 ...
...
...
2018-02-20 16:48:43.959 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.DocBuilder Completed parentDeltaQuery for Entity: building
2018-02-20 16:48:43.959 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.DocBuilder Running ModifiedRowKey() for Entity: assessment
2018-02-20 16:48:43.959 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.JdbcDataSource Creating a connection for entity assessment with URL: jdbc:postgresql://localhost:5432/testdata
2018-02-20 16:48:43.962 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.JdbcDataSource Time taken for getConnection(): 2
2018-02-20 16:48:43.967 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.DocBuilder Completed ModifiedRowKey for Entity: assessment rows obtained : 0
2018-02-20 16:48:43.967 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.DocBuilder Completed DeletedRowKey for Entity: assessment rows obtained : 0
2018-02-20 16:48:43.967 INFO  (Thread-50) [   x:psqlTest] o.a.s.h.d.DocBuilder Completed parentDeltaQuery for Entity: assessment

为什么在日志中没有文档得到更新 althoigh 我们可以看到正在运行构建父增量查询。

我在修改 db-config.xml 时找到了答案,问题出在 parentDeltaQuery: parentDeltaQuery="select assm_pk from assessment_table p where cast(p.bld_id as text) = '${dih.delta.bld_id}'">

而不是使用dih.delta.bld_id ,我应该写building.bld_id其中 building 是子实体名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM