IBM Object Storage는 포괄적인 검색 기능을 제공합니다. SoftLayer의 통합 검색 서비스를 통해 사용자는 계정, 컨테이너 또는 특정 경로(폴더)를 기반으로 인덱스를 검색 할 수 있으며 검색 결과를 필터링하는 데 도움이되는 다양한 매개 변수를 제공합니다. Search Service API는 기존 Object Storage API 위에 메타 정보, 컨테이너 및 객체를 인덱싱하는 동시에 인덱스를 검색하기 위한 익숙한 인터페이스를 제공합니다.

검색 요청

검색 URL에 따라 전체 계정, 특정 컨테이너 또는 특정 경로에 대해 검색을 요청할 수 있습니다. 아래의 예제를 활용하십시오.

검색 URL 예시

Account https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE
Container https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE/container
Path https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE/container/path

파라미터

X-Context 헤더 값에 search 값을 설정하고 Http GET Request를 수행합니다. 필터링된 결과물을 위해서는 몇몇 파라미터가 필요합니다.

1) q : 검색을 위한 쿼리 스트링

예시:

?q=test
?q.meta.foo=bar
?q.meta-foo=bar

위 예제에서 q.meta.foo 와 q.meta-foo 의 경우 custom하게 설정하는 metadata를 의미합니다. foo는 key를, bar는 검색하려는 value를 의미합니다.

2) field : 검색할 필드 값. 기본적으로는 name과 custom meta 값들을 사용하여 검색합니다.

예시:

container: name of the container
content_type: Content type of the object
count: number of objects in a container
hash: a summarized hash of the file (etag)
last_modified: dateTime stamp indicating the object’s most recent modify date
meta.myfield: custom meta values defined on the container or object
name: name of the object or container
object: object name
read: x-container read header value (used for ACL)
write: x-container write header value (used for ACL)

3) type : 검색할 엔티티 타입. 기본적으로는 모든 타입을 보여줍니다. (컨테이너와 오브젝트)

예시:

container
object

4) format : Request의 응답 형식. 설정하지 않으면 plain 타입을 리턴합니다.

예시:

json
xml
plain

5) recursive : 폴더 안에 있는 폴더까지 검색할 것인지를 설정합니다. Default 값은 true 입니다.

예시:

true
false

검색 요청 예시

검색을 할 때에는 요건에 따라 하나 이상의 파라미터를 사용하게 됩니다. 두개 이상의 검색 파라미터를 사용할 때에는 & 값으로 구분합니다. 예를 들어 아래 3가지 조건을 가지고 검색을 하고 싶다면,

  • 전체 account를 recursive하게 검색
  • content type이 “application/directory”인 것을 검색
  • xml 포맷의 응답

아래와 같이 검색을 요청할 수 있습니다.

GET /v1/?q=application%2Fdirectory&field=content_type&recursive=true&format=xml
X-Context: search
X-Auth-Token: AUTH_SADASDM43423DMSSAZXC234

위의 예제를 요청하면 응답 헤더에서 아래와 같은 정보를 받을 수 있습니다.

HTTP/1.1 200 OK
Date: Thu, 19 Oct 2011 12:00:00 GMT
Content-Type: application/xml; charset=utf-8
X-Search-Items-Count: 3
X-Search-Items-Total: 29

이 응답 헤더에서, X-Search-Items-Count 값은 이 응답에 포함된 item의 개수를 나타내고 X-Search-Items-Total은 총 검색 결과 얻을 수 있는 item의 수를 나타냅니다. Total 값이 Count 값보다 크면 더 많은 아이템이 있다는 것을 나타냅니다. 요청시 사용하는 파라미터에 따라 이 헤더에 더 많은 정보가 포함될 수도 있습니다.

위의 예제를 요청하면 응답 바디에 포맷에 따라 아래와 같은 정보를 받을 수 있습니다.

  • JSON Response Body (application/json)
  •  
    [
        {
            "container": "test1",
            "content_type": "application/x-python-code",
            "hash": "c23c402de9d67332bce2a73f31a503c3",
            "last_modified": "Wed, 19 Oct 2011 21:26:30 GMT",
            "meta_mtime": "1318343501.0",
            "name": "test.py",
            "object": "test.py",
            "type": "object"
        },
        {
            "container": "test",
            "content_type": "text/plain",
            "hash": "d41d8cd98f00b204e9800998ecf8427e",
            "last_modified": "Mon, 17 Oct 2011 14:31:11 GMT",
            "meta_mtime": "1318861839.0",
            "name": "test_data/3.txt",
            "object": "test_data/3.txt",
            "type": "object"
        }   
    ]
    
  • XML Response Body (text/xml)
  • 
    
        
            test1
            test.py
            test.py
            Wed, 19 Oct 2011 21:26:30 GMT
            application/x-python-code
            c23c402de9d67332bce2a73f31a503c3
            object
            1318343501.0
        
        
            test
            test_data/3.txt
            test_data/3.txt
            Mon, 17 Oct 2011 14:31:11 GMT
            text/plain
            d41d8cd98f00b204e9800998ecf8427e
            object
            1318861839.0
        
    
    
  • Plain Text Response Body (text/plain)
  • container: test1
    name: test.py
    object: test.py
    last_modified: Wed, 19 Oct 2011 21:26:30 GMT
    content_type: application/x-python-code
    hash: c23c402de9d67332bce2a73f31a503c3
    type: object
    meta_mtime: 1318343501.0
     
    container: test
    name: test_data/3.txt
    object: test_data/3.txt
    last_modified: Mon, 17 Oct 2011 14:31:11 GMT
    content_type: text/plain
    hash: d41d8cd98f00b204e9800998ecf8427e
    type: object
    meta_mtime: 1318861839.0
    

    3 개의 댓글"IBM® Object Storage for Bluemix® 사용법 4. 메타데이터 검색(Metadata Search) 기능 소개"

    1. minju_hwang 3월 06, 2018

      안녕하세요 왓슨 서비스를 이용중인 대학생입니다.
      한가지 궁금한 점이 있어서 개발자님께 댓글 남깁니다.

      IBM Bluemix 상에서 Object Storage를 생성하고 버킷 안에 이미지 파일들을 넣어두었습니다.
      외부에서 파일에 접근할 때, URL을 이용해서 이 파일들을 읽어올 수 있다고 들었는데, 아무리 이것저것 해보아도 되지 않습니다ㅠㅠ

      Cloudberry.net을 이용해서 URL을 생성하는 방법도 있다고 들었지만, access key와 secret key가 있어야 된다고 하네요..
      혹시 어떤 방법으로 파일들을 읽는 URL을 생성할 수 있는지 알 수 있을까요?

      • HyeonJeong_Jo 3월 08, 2018

        안녕하세요. Object Storage의 파일에 접근하는 방법은 여러가지가 있는데요.

        그 중 외부에서 그냥 접근 가능한 URL을 생성하는 방법은 Temporary URL을 생성함으로써 구현할 수 있습니다. IBM Cloud의 Object Storage는 OpenStack의 Swift의 Spec을 따르고 있으므로 다음 링크를 참조하십시오.
        https://docs.openstack.org/swift/latest/api/temporary_url_middleware.html

        JavaScript로 구현해 놓은 코드는 아래를 참조하십시오.
        https://github.com/hjjo/bluemix-objectstorage-serversdk-nodejs/blob/master/lib/ObjectStorageObject.js

        구현하는 순서는 컨테이너에 메타데이터로 X-Container-Meta-Temp-URL-Key 에 key 값을 설정합니다.
        (또는 Account 메타데이터로 X-Account-Meta-Temp-URL-Key 값을 설정합니다.)

        그 다음 설정한 key값과 파일의 경로, 프로젝트 ID 등을 조합하여 HMAC-SHA1 signature를 이용해서 Temporary URL을 생성할 수 있습니다.

    토론 참가

    이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.