首页 > 解决方案 > 数据源中的新数据如何进行增量索引?

问题描述

blob 存储有类似的 blob new/1.jsonnew/2.json

我有一个名为 的索引new-index,名为 indexernew-indexer和名为 datasourcenew-datasource 的 datasouce 主体如下所示:

{
    "name" : "new-datasource",
    "type" : "azureblob",
    "credentials" : { "connectionString" : "MyStorageConnStrning" },
    "container" : { "name" : "mycontaner", "query" : "new" }
}  

"query" : "new"意味着在运行索引器时,它将new从 Blob 存储中获取虚拟目录中的所有 Blob。

索引器运行有一个开始时间和一个结束时间。而且我知道索引器会根据lastModifiedblob( doc ) 的属性进行增量索引。

问题是,在索引器运行的开始时间和结束时间之间,如果像new/3.json在 Virtual Directorynew中一样创建了一个新的 blob,这个 blob 是否也会被这个索引器运行索引,还是需要另一个运行才能被索引。

标签: azureazure-cognitive-search

解决方案


问题是,在索引器运行的开始时间和结束时间之间,如果在 Virtual Directory new 中创建了一个新的 blob,如 new/3.json,这个 blob 是否也会被此索引器运行索引,或者是否需要为它发生另一个运行获得索引。

答案比乔伊所说的要复杂一些。由于索引器通过在页面中枚举 blob 来对 blob 进行索引,因此即使具有更新的时间戳的新 blob 也可能会或可能不会被索引器拾取,具体取决于它所在的页面。

索引器提供的唯一保证是 -

  • 在同一次运行中,索引器将在索引器开始时间之前使用 LastModified 时间戳索引所有 Blob 。
  • 由于数据更改检测策略,增量更改最终将被索引。这意味着它们可能会或可能不会在同一运行中被索引。

不建议做出任何超过高水位线的假设,并且当新的 blob 被索引时在技术上是未定义的行为。

查看这篇文章了解更多详情。我希望这有帮助。


推荐阅读