状态索引中的元数据未更新

问题描述

我有以下带有 URl 和元数据的示例站点地图。我能够成功抓取站点地图及其元数据。但是当我为 URl 更新 sitemap.xml 中的元数据时,元数据不会在下一个获取日期更新。

示例 Sitemap.xml:

<?xml version="1.0"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:news="http://www.sitemaps.org/schemas/sitemap-news/0.9"
    xmlns:image="http://www.sitemaps.org/schemas/sitemap-image/1.1">
    <url>
        <loc>/index.html</loc>
        <lastmod>2020-12-30T14:47:00.0000Z</lastmod>
        <title>Home</title>
        <originalName>home</originalName>
        <effectiveDate></effectiveDate>
        <externalAccess></externalAccess>
    </url>
    <url>
        <loc>/PDF_1000195118.pdf</loc>
        <lastmod>2021-01-04T14:49:00.0000Z</lastmod>
        <title>The power</title>
        <description>test document </description>
        <originalName>PDF_1000195118.pdf</originalName>
        <mimeType>application/pdf</mimeType>        
        <externalAccess>false</externalAccess>
        <excludeFromSearch>true</excludeFromSearch>     
    </url>
</urlset>

状态索引:

 {
        "_index" : "status","_type" : "_doc","_id" : "16276148886a4de6cb055be68f45580043bf855269b2b784ef47e830fbf6f942","_score" : 1.0,"_source" : {         
          "status" : "FETCHED","Metadata" : {
            "excludeFromSearch" : [
              "true"
            ],"lastModifiedDate" : [
              "2021-01-04 20:19:00"
            ],"loggedInOnly" : [
              "false"
            ],"description" : [
              "test document "
            ],"mimeType" : [
              "application/pdf"
            ],"title" : [
              "The power"
            ],"externalAccess" : [
              "false"
            ],"depth" : [
              "1"
            ],"isSitemap" : [
              "false"
            ],"fetch%2Eerror%2Ecount" : [
              "1"
            ],"nextFetchDate" : "2021-01-04T12:13:04.000Z"
        }

之后,我将 sitemap.xml 中的 excludeFromSearch 更改为 false 。但它没有得到更新。

成功获取后如何更新元数据?

解决方法

那是因为 DISCOVERED 仅当 URL 不存在时才会在 ES 中创建。

最初的发现在 status 索引中创建了一个状态为 DISCOVERED 的条目,当您更改站点地图时,它将修改后的 DISCOVERED 文档发送到 ES,但它被忽略了因为那里已经有包含该 URL 的文档了。

一种解决方法是在更新站点地图直接更新文档之前删除状态索引中的文档。

StormCrawler 中的站点地图仅用于发现,状态 中的文档永远不会更新,只会在处理 URL 时覆盖。