我想更新多个数据集的
metadata_created
字段(这些数据集是从以前的系统迁移的,因此在 CKAN 中的创建时间不正确)。
我尝试使用 ckanapi 来执行此操作,但无法使用 API 更新该字段,如之前所述:CKAN:更新metadata_created 和metadata_modified 信息
然后我尝试直接通过 psql 更新
metadata_created
表中的 package
字段:
ckan=> select id, metadata_created, metadata_modified from package where id = 'a0f8e50d-aa28-4c5a-8aca-818d920244c9';
id | metadata_created | metadata_modified
--------------------------------------+---------------------------+----------------------------
a0f8e50d-aa28-4c5a-8aca-818d920244c9 | 2023-07-07 07:27:52.60954 | 2023-07-25 06:03:54.922081
(1 row)
ckan=> update package
set metadata_created = '1999-12-31T23:59:59'
where id = 'a0f8e50d-aa28-4c5a-8aca-818d920244c9'; UPDATE 1
ckan=> select id, metadata_created, metadata_modified from package where id = 'a0f8e50d-aa28-4c5a-8aca-818d920244c9';
id | metadata_created | metadata_modified
--------------------------------------+---------------------+----------------------------
a0f8e50d-aa28-4c5a-8aca-818d920244c9 | 1999-12-31 23:59:59 | 2023-07-25 06:03:54.922081
(1 row)
..但这随后并没有通过 API/UI 反映出来:
$ ckanapi action package_show id=a0f8e50d-aa28-4c5a-8aca-818d920244c9 -r https://our.ckan.tld | jq '.metadata_created'
"2023-07-07T07:27:52.609540"
是否需要刷新/刷新缓存才能使此更新可见?
(请注意,通过 API 对数据集中的其他字段进行微小更改似乎可以使更新可见,但这对于我们需要更新的大量记录来说并不是一个实用的解决方案)。
谢谢。
罗伯特。
我用所需的
package
值更新了 metadata_created
表行,并期望这会反映在 UI/API 中。
解决方案是重建 Solr 索引,我们通过从 CKAN 容器之一运行此命令来实现:
ckan -c /path/to/ckan.ini search-index rebuild
运行上述命令后,“ckanapi”中的元数据时间戳与 postgres 数据库中的元数据时间戳相匹配。