Проблема с индексатором BLOB-объектов Azure

Я столкнулся со сценарием, в котором я хочу проиндексировать все файлы, присутствующие в хранилище BLOB-объектов. Но в сценарии, если файл, загруженный в Blob, защищен паролем, индексатор дает сбой, а также индексатор теперь не может индексировать оставшиеся файлы.

[
    {
        "key": null,
        "errorMessage": "Error processing blob 'url' with content type ''. Status:422, error: "
    }
]

Есть ли способ игнорировать файлы, защищенные паролем, или способ продолжить процесс индексации, даже если в каком-то файле есть ошибка.


person Community    schedule 10.10.2017    source источник
comment
Можете ли вы поделиться своим определением индексатора?   -  person Gaurav Mantri    schedule 10.10.2017
comment
` Indexer indexer = new Indexer() { Name = indexerName, DataSourceName = name, TargetIndexName = indexName, Schedule = new IndexingSchedule() { Interval = System.TimeSpan.FromMinutes(Convert.ToDouble(ConfigurationManager.AppSettings[indexrefreshtime])) } } ;`   -  person    schedule 10.10.2017
comment
indexer.Parameters = new IndexingParameters().ExcludeFileNameExtensions(ConfigurationManager.AppSettings[filetoignore].Split(',')); indexer.FieldMappings = новый список‹FieldMapping›(); indexer.FieldMappings.Add(new Microsoft.Azure.Search.Models.FieldMapping() { SourceFieldName = metadata_storage_path, MappingFunction = Microsoft.Azure.Search.Models.FieldMappingFunction.Base64Encode() });   -  person    schedule 10.10.2017
comment
Пожалуйста, не включайте их в комментарии. Вместо этого отредактируйте свой вопрос и включите туда код.   -  person Gaurav Mantri    schedule 10.10.2017
comment
Я предполагаю, что проблема в том, что загруженный файл защищен паролем, и, следовательно, индексатор дает сбой, но он не продолжает индексацию других файлов.   -  person    schedule 11.10.2017


Ответы (2)


См. раздел Что делать с неподдерживаемыми типами контента в Управление индексацией больших двоичных объектов. Используйте параметр конфигурации failOnUnsupportedContentType:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2016-09-01
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "failOnUnsupportedContentType" : false } }
}
person Eugene Shvets    schedule 10.10.2017
comment
Я установил такой параметр, но, похоже, он не работает. indexer.Parameters = new IndexingParameters().DoNotFailOnUnsupportedContentType(); есть ли что-нибудь еще, что мне нужно сделать? - person ; 11.10.2017
comment
Каково имя вашей службы поиска и имя индексатора? Я могу взглянуть на ваше определение индексатора, чтобы убедиться, что оно действительно обновлено. - person Eugene Shvets; 11.10.2017
comment
Я не уверен, что должен делиться этими подробностями. Я использую клиентский код .NET для создания индексатора indexer.Parameters = new IndexingParameters().DoNotFailOnUnsupportedContentType(); // исключение файлов из индексации indexer.Parameters = new IndexingParameters().ExcludeFileNameExtensions(ConfigurationManager.AppSettings[filetoignore].Split(',')); indexer.FieldMappings = новый список‹FieldMapping›(); - person ; 11.10.2017
comment
Но вы звоните, чтобы обновить определение вашего индексатора? Вы можете отправить мне подробности по электронной почте вместо публикации здесь: eugenesh на обычном домене Microsoft. - person Eugene Shvets; 11.10.2017
comment
мой код в основном удаляет существующий индексатор, а затем создает новый. - person ; 11.10.2017
comment
Мы не сможем вам помочь, если не будем знать имя вашей службы и имя индексатора. - person Eugene Shvets; 11.10.2017
comment
установка таких параметров будет работать? indexer.Parameters = new IndexingParameters().ExcludeFileNameExtensions(ConfigurationManager.AppSettings[filetoignore].Split(',')).DoNotFailOnUnsupportedContentType(); - person ; 11.10.2017
comment
Я предполагаю, что проблема в том, что загруженный файл защищен паролем, и, следовательно, индексатор дает сбой, но он не продолжает индексацию других файлов. - person ; 11.10.2017
comment
Евгений работает в Microsoft в команде поиска Azure. Он был бы лучшим человеком, чтобы помочь вам с этим. Он поделился своим адресом электронной почты в одном из комментариев выше. Пожалуйста, напишите ему подробности, которые он просил. - person Gaurav Mantri; 11.10.2017

Есть ли способ игнорировать файлы, защищенные паролем, или способ продолжить процесс индексации, даже если в каком-то файле есть ошибка.

Один из возможных способов сделать это — определить метаданные в большом двоичном объекте с именем AzureSearch_Skip и установить для него значение true. В этом случае служба поиска Azure проигнорирует этот большой двоичный объект и перейдет к следующему большому двоичному объекту в списке.

Подробнее об этом можно прочитать здесь: https://docs.microsoft.com/en-us/azure/search/search-howto-indexing-azure-blob-storage#controlling-what-parts-of-the-blob-are-indexed.

person Gaurav Mantri    schedule 10.10.2017
comment
Это хороший подход, если вы хотите игнорировать один или несколько известных плохих BLOB-объектов. Чтобы иметь дело со всеми большими двоичными объектами, лучше использовать параметр конфигурации failOnUnsupportedContentType. - person Eugene Shvets; 10.10.2017