azure搜索索引/索引器没有索引新数据

时间:2017-07-11 13:34:45

标签: azure-search

短篇小说: 我使用azure搜索服务,看起来它没有索引添加到我视图中的新行(数据源指向视图)。

长篇故事: 我有一个视图,从我的数据库中的许多表创建。我创建了一个指向此视图的数据源。视图有很多列,这里的相关内容是2:Id和ChangeIndicator。更改指示符(int)具有计算值,即对表中更改的某些值进行求和的结果,用于生成视图。 我定义了一个索引,maped到我的数据源和索引器。索引器正确填充索引(第一次),它会查看我视图中的所有行并正确索引数据(据我所检查)。

问题是当我在视图中添加新行时 - 这些行未编入索引。

我使用API​​调用创建数据源,索引和索引器。

数据源的创建方式如下:

{
    "name": "cs5datasource",
    "description": "Data source for cs search",
    "type": "azuresql",
    "credentials": { "connectionString" : "XXX - Connection string - XXX" },
    "container": {"name": "UserDataAggregatedView"},
    "dataChangeDetectionPolicy": {
        "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",  
        "highWaterMarkColumnName" : "ChangeIndicator" 
    }
}

索引创建如下:

{
    "name": "cs5indexer",
    "description": "Indexer service",
    "dataSourceName": "cs5datasource",
    "targetIndexName": "cs5index",
    "schedule": {"interval" : "PT5M", "startTime" : "2017-06-24T22:00:00Z"}
}

添加新行(未编制索引的行)后,如果删除索引器并再次创建它,则视图将正确编入索引。似乎问题是检测新行。添加的新行有效,索引过程不会生成错误。

我需要一种方法来将新添加的行编入索引,以及从索引中删除已删除行的方法。怎么做?

谢谢。

稍后编辑: 新添加的行未编入索引。 我添加的新行看起来像这样:

Id |   name   | lang  |    proffesion   | changeIndicator
26 | test_011 |  en   | history teacher |    49536867 

1 个答案:

答案 0 :(得分:2)

视图中的changeIndicator列可能不适合作为高水印列。对于每个新行或更新的行,高水位栏应单调增加;我们建议您使用rowversion列进行更改跟踪。

来自enter image description here

  

如果您的表或视图包含一列,则可以使用此策略   符合以下标准:

     
      
  • 所有插入都指定列的值。
  •   
  • 项目的所有更新   还会更改列的值。
  •   
  • 此列的值   每次插入或更新都会增加。
  •   
  • 使用以下WHERE查询   和ORDER BY子句可以有效执行:WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]
  •   

要捕获已删除的行,请阅读Capturing new, changed, and deleted rows中的Soft Delete Column Deletion Detection policy部分。