搜索服务的 API 操作

SoftLayer 对象存储器所独有的综合搜索工具与您以前见过的搜索工具都不同。SoftLayer 的集成搜索服务可用于根据帐户、容器或路径来搜索索引,并提供大量参数来帮助过滤搜索结果。“搜索服务”API 基于现有“对象存储器”API 构建而成,可对
元信息、容器和对象建立索引,同时提供一个熟悉的界面来搜索索引。

请求数

可以发出搜索请求,以根据搜索时输入的 URL 来搜索整个帐户、特定容器或指定的路径。利用以下某个示例以及认证代码来执行所需的搜索。

期望的搜索 URL
帐户 https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE
容器 https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE/container
路径 https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE/container/path

在访问搜索服务 API 的期望区域后,将使用包含“search”值的“X-Context”头来执行“GET”请求。
要过滤结果,可使用多个参数:

参数

q

搜索查询字符串。

示例:

?q=test

指定字段(包括元数据信息)时,可使用句点分隔“q”和字段名称。


示例:

?q.content_type=application

对于元数据字段,您可以使用句点或短划线将“meta”与实际元数据密钥名称分隔开来。


示例(这些会产生一致的结果):

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

字段

要搜索的字段。默认设置将搜索名称和自定义元数据值。

  • container:容器的名称
  • content_type:对象的内容类型
  • count:容器中的对象数
  • hash:文件 (etag) 的汇总散列值
  • last_modified:用于指示对象最近修改日期的 dateTime 戳记
  • meta.myfield:在容器或对象上定义的自定义元数据值
  • name:对象或容器的名称
  • object:对象名称
  • read:x 容器读请求头值(用于 ACL)
  • write:x 容器写请求头值(用于 ACL)

类型

要搜索的实体类型。默认情况下将显示所有类型(容器和对象)

  • 容器
  • 对象

格式

返回格式。下面显示了一些示例。默认值:plain

  • json
  • xml
  • plain

递归

定义是将搜索限制为一个目录级别还是递归搜索。默认值:true

  • true
  • false

基本搜索查询可包含一个或多个参数,具体取决于期望的返回内容。在输入多个搜索参数时,用 & 符号分隔这些参数。例如,如果要在帐户中递归搜索内容类型为“application/directory”的对象,并请求 XML 格式的返回内容,请按如下方式来设置请求格式:

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

响应

搜索 API 针对您的查询所返回的响应包含一个基本头和一个主体(主体可采用 json、xml 或纯文本格式)。响应头中将指出查询的 dateTime 戳记、内容和返回类型、返回计数以及与查询相关的总项数。按如下方式设置响应头的格式:

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 指示响应中包含的项数,而 X-Search-Items-Total 指示可用项的总数。如果总数超出了该计数,那么就可以访存其他项。修订参数可能导致返回中包含其他信息。

响应主体包含大量与查询相关的属性,包括内容类型、上次修改日期和 MD5 散列等。 值得注意的是,对于任何响应,将返回与数据相关的所有属性,但不含关系属性或计数属性,因为对象存储器 API 中目前未应用对象掩码。
以下示例展示了 json、XML 和纯文本格式的响应主体。

JSON 响应主体(应用//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 响应主体(文本/xml)

<?xml version="1.0" encoding="UTF-8"?>
<results>
    <object>
        <container>test1</container>
        <name>test.py</name>
        <object>test.py</object>
        <last_modified>Wed, 19 Oct 2011 21:26:30 GMT</last_modified>
        <content_type>application/x-python-code</content_type>
        <hash>c23c402de9d67332bce2a73f31a503c3</hash>
        <type>object</type>
        <meta_mtime>1318343501.0</meta_mtime>
    </object>
    <object>
        <container>test</container>
        <name>test_data/3.txt</name>
        <object>test_data/3.txt</object>
        <last_modified>Mon, 17 Oct 2011 14:31:11 GMT</last_modified>
        <content_type>text/plain</content_type>
        <hash>d41d8cd98f00b204e9800998ecf8427e</hash>
        <type>object</type>
        <meta_mtime>1318861839.0</meta_mtime>
    </object>
</results>

纯文本响应主体(文本/纯文本)

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

如前所述,可使用上述部分中列出的参数来构造请求以调用特定类型的响应。如果您熟悉此服务的功能,请参阅“方法”页面,以获取这方面的基本详细信息以及与对象存储器 API 和搜索服务 API 相关的所有方法。