Ceph RGW ElasticSearch同步模块介绍

ElasticSearch同步模块

注意:截至 2020 年 5 月 31 日,仅支持 Elasticsearch 6 及更低版本。不支持 ElasticSearch 7。

此同步模块将其他区域的元数据写入 ElasticSearch。截至 luminous,这是我们目前存储在 ElasticSearch 中的数据字段的 json。

{
     "_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"
       }
     }
   }

弹性搜索层类型可配置项

  • 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 中引入了一个新查询,可以为弹性搜索请求提供服务。所有这些请求都必须发送到元数据主区域。

语法

获取弹性搜索查询

GET /{bucket}?query={query-expr}

请求参数:

  • max-keys:要返回的最大条目数
  • marker:分页标记

表达式 := [(]<arg> <op> <value> [)][<and|or> ...]

OP 是以下之一:<、<=、==、>=、>

例如:

GET /?query=name==foo

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

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

配置自定义元数据字段

定义应为哪些自定义元数据条目编制索引(在指定的存储桶下),以及这些键的类型。如果配置了显式自定义元数据索引,则需要这样做,以便 rgw 将为指定的自定义元数据值编制索引。否则,在索引元数据键的类型不是字符串的情况下,则需要它。

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

多个元数据字段必须以逗号分隔,可以为带有 ; 的字段强制使用类型。当前允许的类型是字符串(默认)、整数和日期。

例如,如果要将自定义对象元数据 x-amz-meta-year 索引为 int,将 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

 

posted @ 2023-03-01 10:37  Varden  阅读(278)  评论(0编辑  收藏  举报