約 4,000 のドキュメントを含む DocumentDB インスタンスがあります。検索してインデックスを作成するように Azure Search を構成しました。これは最初はうまくいきました。昨日、複雑なフィールドにインデックスを付けるために、1 つの UDF と共にドキュメントとインデックス付きフィールドを更新しました。現在、インデクサーは、DocumentDB が RequestRateTooLargeException を報告していることを報告しています。そのエラーに関するドキュメントは、呼び出しを調整することを提案していますが、検索でそれを行う必要があるようです。回避策はありますか?
1 に答える
Azure Search コードは DocumentDb クライアント SDK を使用します。これは、RequestRateTooLarge エラーが発生したときに、適切なタイムアウトで内部的に再試行します。ただし、これは、同じ DocumentDb コレクションを同時に使用しているクライアントが他にいない場合にのみ機能します。コレクションの他の同時ユーザーがいるかどうかを確認してください。その場合は、コレクションに容量を追加することを検討してください。
これは、データに関する他の問題が原因で、DocumentDb インデクサーが処理を進めることができないために発生することもあります。その後、同じデータに対して再試行し、有害なメッセージに似た同じデータの問題が再び発生する可能性があります。特定のドキュメント (または少数のドキュメント) がインデックス作成の問題を引き起こしていることがわかった場合は、それらを無視することを選択できます。公開しようとしているドキュメントからの抜粋を貼り付けます。
偶発的なインデックス作成の失敗を許容する
既定では、Azure Search インデクサーは、1 つのドキュメントのインデックス作成に失敗するとすぐにインデックス作成を停止します。シナリオに応じて、一部の障害を許容することを選択できます (たとえば、データソース全体のインデックスを繰り返し再作成する場合)。Azure Search には、この動作を微調整するための 2 つのインデクサー パラメーターが用意されています。
- maxFailedItems : インデクサーの実行が失敗と見なされる前に、インデックス作成に失敗できる項目の数。デフォルトは 0 です。
- maxFailedItemsPerBatch : インデクサーの実行が失敗と見なされる前に、1 つのバッチでインデックス作成に失敗できるアイテムの数。デフォルトは 0 です。
これらの値は、インデクサーの作成または更新時に次のパラメーターのいずれかまたは両方を指定することで、いつでも変更できます。
PUT https://service.search.windows.net/indexers/myindexer?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
{
"dataSourceName" : "mydatasource",
"targetIndexName" : "myindex",
"parameters" : { "maxFailedItems" : 10, "maxFailedItemsPerBatch" : 5 }
}
一部のエラーを許容することを選択した場合でも、失敗したドキュメントに関する情報は、Get Indexer Status API によって返されます。