注意

本文档适用于 Ceph 开发版本。

ElasticSearch同步模块

Kraken 版本中的新功能。

Note

截至2020年5月31日,仅支持Elasticsearch 6及以下版本。Elasticsearch 7不受支持。

此同步模块将其他区域的元数据写入ElasticSearch。截至

{
     "_index" : "rgw-gold-ee5863d6",
     "_type" : "object",
     "_id" : "34137443-8592-48d9-8ca7-160255d52ade.34137.1:object1:null",
     "_score" : 1.0,
     "_source" : {
       "bucket" : "testbucket123",
       "name" : "object1",
       "instance" : "null",
       "versioned_epoch" : 0,
       "owner" : {
         "id" : "user1",
         "display_name" : "user1"
       },
       "permissions" : [
         "user1"
       ],
       "meta" : {
         "size" : 712354,
         "mtime" : "2017-05-04T12:54:16.462Z",
         "etag" : "7ac66c0f148de9519b8bd264312c4d64"
       }
     }
   }

ElasticSearch层级类型可配置项

  • endpoint

指定访问Elasticsearch服务器的端点

  • num_shards(整数)

在数据同步初始化时配置Elasticsearch的分片数。请注意,初始化后无法更改。此处任何更改都需要重建Elasticsearch索引并重新初始化数据同步过程。

  • num_replicas(整数)

在数据同步初始化时配置Elasticsearch的副本数。

  • explicit_custom_meta(true | false)

指定是否对所有用户自定义元数据进行索引,或者用户是否需要配置(在存储桶级别)应索引的自定义元数据条目。默认情况下为false

  • index_buckets_list(以逗号分隔的字符串列表)

如果为空,则所有存储桶将被索引。否则,仅索引此处指定的存储桶。可以提供存储桶前缀(例如,foo*),或存储桶后缀(例如,*bar)。

  • approved_owners_list(以逗号分隔的字符串列表)

如果为空,则所有所有者的存储桶将被索引(受其他限制约束),否则,仅索引指定所有者拥有的存储桶。也可以提供后缀和前缀。

  • override_index_path(字符串)

如果不为空,此字符串将用作Elasticsearch索引路径。否则,索引路径将在同步初始化时确定和生成。

最终用户元数据查询

Luminous 版本新增。

由于ElasticSearch集群现在存储对象元数据,因此确保ElasticSearch端点不公开且仅对集群管理员可访问非常重要。为了向最终用户公开元数据查询,这提出了一个问题,因为我们希望用户仅查询其元数据而不是任何其他用户的元数据,这需要ElasticSearch集群以类似于RGW的方式对用户进行身份验证,但这提出了一个问题。

截至 Luminous RGW在元数据主区域现在可以服务最终用户请求。这允许不在公共中暴露Elasticsearch端点,并且还解决了身份验证和授权问题,因为RGW本身可以对最终用户请求进行身份验证。为此,RGW在存储桶API中引入了一个新的查询,可以服务Elasticsearch请求。所有这些请求都必须发送到元数据主区域。

语法

获取Elasticsearch查询

GET /{bucket}?query={query-expr}
请求参数:
  • max-keys:返回的最大条目数

  • marker:分页标记

expression := [(]<arg> <op> <value> [)][<and|or> ...]

op是以下之一:

例如

GET /?query=name==foo

将返回用户具有读取权限的所有索引键,并且名称为“foo”。

输出将是类似于S3列出存储桶响应的XML键列表。

配置自定义元数据字段

定义应在指定存储桶下索引哪些自定义元数据条目,以及这些键的类型。如果配置了显式自定义元数据索引,则需要此操作以使rgw索引指定的自定义元数据值。否则,在索引的元数据键类型为字符串以外的其他类型的情况下需要此操作。

POST /{bucket}?mdsearch
x-amz-meta-search: <key [; type]> [, ...]

多个元数据字段必须用逗号分隔,可以使用;为字段强制指定类型。当前允许的类型是string(默认)、integer和date

例如,如果您想将自定义对象元数据x-amz-meta-year作为整数索引,x-amz-meta-date作为日期类型,x-amz-meta-title作为字符串,您将执行

POST /mybooks?mdsearch
x-amz-meta-search: x-amz-meta-year;int, x-amz-meta-release-date;date, x-amz-meta-title;string

删除自定义元数据配置

删除自定义元数据存储桶配置。

DELETE /<bucket>?mdsearch

获取自定义元数据配置

检索自定义元数据存储桶配置。

GET /<bucket>?mdsearch

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.