Azure Search의 필드 매핑에서 metadata_storage_path에서 원시 URL을 검색하는 방법
6161 단어 AzureAzureSearchPostmanREST-API
소개
Azure BLOB 스토리지에 pdf 파일 등을 업로드하고 Azure Search에서 인덱싱하면 파일의 전체 텍스트 검색을 수행할 수 있습니다. 이를 응용하여 파일을 검색하거나 파일을 다운로드할 수 있는 웹사이트 구축도 가능합니다. 서비스 작성에 있어서, 필자가 가장 빠져 버린 곳이, metadata_storage_path(Blob의 링크가 base64로 변환된 데이터)의 가공입니다. 이 작업을 수행하지 않으면 원시 URL을 검색하지 않고 HTML에서 하이퍼링크를 설치할 수 없습니다. 코드 측이 아니라 Azure Search상에서 어떻게든 가공할 수 없을까 생각해 트라이한 결과가 이쪽이 됩니다. MS 공식 문서에 방법은 쓰고 있습니다만, 조금 알기 어렵기 때문에, 본 기사에서 정리하기로 했습니다.
(공식: htps : // / cs. 미 c 로소 ft. 코 m / 자 jp / 아즈레 / 세아 rch / 세아 rch- )
Azure Search 및 Storage Account(BLOB) 배포
이쪽의 순서에 대해서는, 생략하겠습니다. 이 기사에서는 이미 일부 파일이 인덱싱되어 필드가 구성된 상태라고 가정합니다.
metadata_storage_path의 초기 상태↓
필드 추가
원시 URL을 저장하는 필드를 Azure Search에서 새로 추가합니다. 이번에는 예제로 "original_path"라는 필드를 "Retrievable"로 만들었습니다.
필드 매핑 설정
REST API를 사용하여 Azure Search에서 만든 인덱스의 필드 매핑을 설정합니다. 이번 API를 두드리는 도구로 Postman을 사용합니다.
● 먼저 현재 필드 매핑 정보를 GET합니다. 취득한 내용은 모두 메모장 등에 복사해 두십시오.
GET https://[search service name].search.windows.net/indexers/[my indexer name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
● 그런 다음 decode를 수행합니다. 방금 GET 한 JSON을 바탕으로 다음 body를 PUT하십시오 (복자 등은 적절히 바꾸십시오).
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60D553BE516BF\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings" : [
{
"sourceFieldName" : "metadata_storage_path",
"targetFieldName" : "metadata_storage_path",
"mappingFunction" : { "name" : "base64Decode", "parameters" : { "useHttpServerUtilityUrlTokenDecode" : false } }
}],
"disabled": null
}
● 그런 다음 필드를 포크합니다. GET 한 JSON을 바탕으로 다음 body를 PUT하십시오 (복자 등은 적절히 바꾸십시오).
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60D553BE516BF\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings" : [
{ "sourceFieldName" : "metadata_storage_path", "mappingFunction" : { "name" : "base64Encode" } },
{ "sourceFieldName" : "metadata_storage_path", "targetFieldName" : "original_path" }
],
"disabled": null
}
● 갱신된 필드 매핑의 정보를 GET 해 보면, 이하와 같이 되어 있을까 생각합니다.
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60E33753011E2\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "metadata_storage_path",
"mappingFunction": {
"name": "base64Encode",
"parameters": null
}
},
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "original_path",
"mappingFunction": null
}
],
"disabled": null
}
동작 확인
필드 매핑을 업데이트한 후 BLOB Storage에 파일을 업로드하고 Azure Search에서 인덱싱하고 Blob URL을 검색할 수 있는지 확인해 보세요.
사이고에게
본 기사에서는 base64로 변환된 데이터인 metadata_storage_path의 변환 방법에 대해 소개했습니다. 등록한 필드 매핑이 반영되는 것은, 인덱싱시이므로, 신규로 인덱스를 작성할 때 등은 적용할 수 없는 방법으로 되어 있습니다. 다른 방법을 아시는 분이 있으면 꼭 교수 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(Azure Search의 필드 매핑에서 metadata_storage_path에서 원시 URL을 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taminami/items/1cfd9d3992c2096c41b0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이쪽의 순서에 대해서는, 생략하겠습니다. 이 기사에서는 이미 일부 파일이 인덱싱되어 필드가 구성된 상태라고 가정합니다.
metadata_storage_path의 초기 상태↓
필드 추가
원시 URL을 저장하는 필드를 Azure Search에서 새로 추가합니다. 이번에는 예제로 "original_path"라는 필드를 "Retrievable"로 만들었습니다.
필드 매핑 설정
REST API를 사용하여 Azure Search에서 만든 인덱스의 필드 매핑을 설정합니다. 이번 API를 두드리는 도구로 Postman을 사용합니다.
● 먼저 현재 필드 매핑 정보를 GET합니다. 취득한 내용은 모두 메모장 등에 복사해 두십시오.
GET https://[search service name].search.windows.net/indexers/[my indexer name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
● 그런 다음 decode를 수행합니다. 방금 GET 한 JSON을 바탕으로 다음 body를 PUT하십시오 (복자 등은 적절히 바꾸십시오).
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60D553BE516BF\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings" : [
{
"sourceFieldName" : "metadata_storage_path",
"targetFieldName" : "metadata_storage_path",
"mappingFunction" : { "name" : "base64Decode", "parameters" : { "useHttpServerUtilityUrlTokenDecode" : false } }
}],
"disabled": null
}
● 그런 다음 필드를 포크합니다. GET 한 JSON을 바탕으로 다음 body를 PUT하십시오 (복자 등은 적절히 바꾸십시오).
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60D553BE516BF\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings" : [
{ "sourceFieldName" : "metadata_storage_path", "mappingFunction" : { "name" : "base64Encode" } },
{ "sourceFieldName" : "metadata_storage_path", "targetFieldName" : "original_path" }
],
"disabled": null
}
● 갱신된 필드 매핑의 정보를 GET 해 보면, 이하와 같이 되어 있을까 생각합니다.
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60E33753011E2\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "metadata_storage_path",
"mappingFunction": {
"name": "base64Encode",
"parameters": null
}
},
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "original_path",
"mappingFunction": null
}
],
"disabled": null
}
동작 확인
필드 매핑을 업데이트한 후 BLOB Storage에 파일을 업로드하고 Azure Search에서 인덱싱하고 Blob URL을 검색할 수 있는지 확인해 보세요.
사이고에게
본 기사에서는 base64로 변환된 데이터인 metadata_storage_path의 변환 방법에 대해 소개했습니다. 등록한 필드 매핑이 반영되는 것은, 인덱싱시이므로, 신규로 인덱스를 작성할 때 등은 적용할 수 없는 방법으로 되어 있습니다. 다른 방법을 아시는 분이 있으면 꼭 교수 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(Azure Search의 필드 매핑에서 metadata_storage_path에서 원시 URL을 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taminami/items/1cfd9d3992c2096c41b0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
REST API를 사용하여 Azure Search에서 만든 인덱스의 필드 매핑을 설정합니다. 이번 API를 두드리는 도구로 Postman을 사용합니다.
● 먼저 현재 필드 매핑 정보를 GET합니다. 취득한 내용은 모두 메모장 등에 복사해 두십시오.
GET https://[search service name].search.windows.net/indexers/[my indexer name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
● 그런 다음 decode를 수행합니다. 방금 GET 한 JSON을 바탕으로 다음 body를 PUT하십시오 (복자 등은 적절히 바꾸십시오).
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60D553BE516BF\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings" : [
{
"sourceFieldName" : "metadata_storage_path",
"targetFieldName" : "metadata_storage_path",
"mappingFunction" : { "name" : "base64Decode", "parameters" : { "useHttpServerUtilityUrlTokenDecode" : false } }
}],
"disabled": null
}
● 그런 다음 필드를 포크합니다. GET 한 JSON을 바탕으로 다음 body를 PUT하십시오 (복자 등은 적절히 바꾸십시오).
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60D553BE516BF\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings" : [
{ "sourceFieldName" : "metadata_storage_path", "mappingFunction" : { "name" : "base64Encode" } },
{ "sourceFieldName" : "metadata_storage_path", "targetFieldName" : "original_path" }
],
"disabled": null
}
● 갱신된 필드 매핑의 정보를 GET 해 보면, 이하와 같이 되어 있을까 생각합니다.
{
"@odata.context": "https://XXXXX.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D60E33753011E2\"",
"name": "YYYYY",
"description": "",
"dataSourceName": "ZZZZZ",
"targetIndexName": "WWWWW",
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": false,
"configuration": {
"dataToExtract": "contentAndMetadata"
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "metadata_storage_path",
"mappingFunction": {
"name": "base64Encode",
"parameters": null
}
},
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "original_path",
"mappingFunction": null
}
],
"disabled": null
}
동작 확인
필드 매핑을 업데이트한 후 BLOB Storage에 파일을 업로드하고 Azure Search에서 인덱싱하고 Blob URL을 검색할 수 있는지 확인해 보세요.
사이고에게
본 기사에서는 base64로 변환된 데이터인 metadata_storage_path의 변환 방법에 대해 소개했습니다. 등록한 필드 매핑이 반영되는 것은, 인덱싱시이므로, 신규로 인덱스를 작성할 때 등은 적용할 수 없는 방법으로 되어 있습니다. 다른 방법을 아시는 분이 있으면 꼭 교수 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(Azure Search의 필드 매핑에서 metadata_storage_path에서 원시 URL을 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taminami/items/1cfd9d3992c2096c41b0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
본 기사에서는 base64로 변환된 데이터인 metadata_storage_path의 변환 방법에 대해 소개했습니다. 등록한 필드 매핑이 반영되는 것은, 인덱싱시이므로, 신규로 인덱스를 작성할 때 등은 적용할 수 없는 방법으로 되어 있습니다. 다른 방법을 아시는 분이 있으면 꼭 교수 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(Azure Search의 필드 매핑에서 metadata_storage_path에서 원시 URL을 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taminami/items/1cfd9d3992c2096c41b0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)