【问题标题】:Azure search indexer indexes entire Cosmos db data source every timeAzure 搜索索引器每次都会索引整个 Cosmos db 数据源
【发布时间】:2020-10-21 00:12:45
【问题描述】:

我有基于 Cosmos Db 的 Azure 搜索索引。当我的数据源配置为没有自定义查询(索引器在每次运行时只抓取新数据)时,所有这些都发挥了作用。

现在我需要定义如下查询:

SELECT c.id, 1 as itemType, c._ts FROM c WHERE c._ts >= @HighWaterMark ORDER BY c._ts

问题是每次我的索引器运行时都会收集一个完整的数据源。数据源4000条,新增5条,数据不变。

我发现使用以下查询尊重以前的进度(索引器的工作方式与没有查询时一样):

SELECT * FROM c WHERE c._ts >= @HighWaterMark ORDER BY c._ts

我还尝试将@HighWaterMark 作为我的字段之一加载,发现@HighWaterMark 始终为-1。

更新

我的数据是不可更改的。因此我没有使用数据变化检测策略。但是启用此策略会使索引器按预期工作。我没有在 Microsoft 文档中找到有关策略和索引器工作之间这种依赖关系的任何信息。

【问题讨论】:

    标签: azure azure-cognitive-search azure-cognitive-services


    【解决方案1】:

    您可以定义一个新的索引器并以您需要的方式指定查询:

    更多信息:https://docs.microsoft.com/en-us/azure/search/search-howto-index-cosmosdb

    但是,如果您想保持 Azure 认知搜索索引的更新,更好的方法是结合 Cosmos Db Change Feed + Azure Functions,然后将更新/新文档发送到您的 Azure 认知搜索索引。

    更多信息:

    https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed-functions

    https://azure.microsoft.com/en-us/resources/videos/azure-cosmosdb-change-feed/

    【讨论】:

    • 感谢您的回复。但这无济于事。我指定了查询并且它有效。我有一个不同的问题。关于“推送”模型建议:我有 azure 功能来更新飞行中的索引,并主要使用索引器作为最后一道防线。但同样对原始问题没有帮助
    猜你喜欢
    • 1970-01-01
    • 2019-02-05
    • 2019-01-23
    • 2019-06-19
    • 2017-12-17
    • 2017-01-15
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多