Amazon OpenSearch Service 中编制数据索引 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon OpenSearch Service 中编制数据索引

由于 Amazon OpenSearch Service 使用的是 REST API,因此可通过多种方法为文档编制索引。您可以使用标准客户端 (如 curl) 或可发送 HTTP 请求的任何编程语言。为了进一步简化与之交互的过程,OpenSearch Service 拥有了适用于多种编程语言的客户端。高级用户可以直接跳至将流数据加载到 Amazon OpenSearch 服务

强烈建议您使用 Amazon OpenSearch Ingestion 来摄取数据,这是在 OpenSearch Service 中内置的完全托管的数据收集器。有关更多信息,请参阅 Amazon OpenSearch Ingestion

有关建立索引的简介,请参阅 OpenSearch 文档

索引的命名限制

OpenSearch Service 索引具有以下命名限制:

  • 所有字母必须为小写形式。

  • 索引名称不能以 _- 开头。

  • 索引名称不能包含空格、逗号、:"*+/\|?#><

请勿在索引、类型或文档 ID 名称中包含敏感信息。OpenSearch Service 会在其统一资源标识符 (URI) 中使用这些名称。服务器和应用程序通常会记录 HTTP 请求,从而会在 URI 包含敏感信息的情况下可能会导致不必要的数据泄露:

2018-10-03T23:39:43 198.51.100.14 200 "GET https://opensearch-domain/dr-jane-doe/flu-patients-2018/202-555-0100/ HTTP/1.1"

即使您没有查看关联的 JSON 文档的权限,您可以从这条假的日志线推断,Doe 医生的一个电话号码为 202-555-0100 的患者在 2018 年患了流感。

如果 OpenSearch Service 在索引名称中检测到真实或感知的 IP 地址(例如 my-index-12.34.56.78.91),则它会屏蔽该 IP 地址。调用 _cat/indices 会产生以下响应:

green open my-index-x.x.x.x.91 soY19tBERoKo71WcEScidw 5 1 0 0 2kb 1kb

为避免不必要的混淆,请避免在索引名称中包括 IP 地址。

减小响应大小

来自 _index_bulk API 的响应包含相当多的信息。此信息可用于对请求进行问题排查或实施重试逻辑,但可使用大量带宽。在本示例中,对 32 字节文档编制索引会生成 339 字节响应(包括标头):

PUT opensearch-domain/more-movies/_doc/1 {"title": "Back to the Future"}

响应

{ "_index": "more-movies", "_type": "_doc", "_id": "1", "_version": 4, "result": "updated", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 }

此响应大小可能看起来很小,但如果您每天索引 1,000,000 个文档(大约每秒 11.5 个文档),则每个响应 339 字节的下载流量为每月 10.17 GB。

如果数据传输成本很重要,请使用 filter_path 参数来减小 OpenSearch Service 响应的大小,但请小心,不要筛掉标识或重试失败请求所需的字段。这些字段会因客户端而异。filter_path 参数适用于所有 OpenSearch Service REST API,但尤其适用于您经常调用的 API,例如 _index_bulk API:

PUT opensearch-domain/more-movies/_doc/1?filter_path=result,_shards.total {"title": "Back to the Future"}

响应

{ "result": "updated", "_shards": { "total": 2 } }

不同于包括字段,您可以使用 - 前缀排除字段。filter_path 还支持通配符:

POST opensearch-domain/_bulk?filter_path=-took,-items.index._* { "index": { "_index": "more-movies", "_id": "1" } } {"title": "Back to the Future"} { "index": { "_index": "more-movies", "_id": "2" } } {"title": "Spirited Away"}

响应

{ "errors": false, "items": [ { "index": { "result": "updated", "status": 200 } }, { "index": { "result": "updated", "status": 200 } } ] }

索引编解码器

索引编解码器决定如何压缩索引上存储的字段并将其存储在磁盘上。索引编解码器由静态 index.codec 设置控制,静态设置指定压缩算法。此设置会影响索引分片大小和操作性能。

有关支持的编解码器及其性能特性的列表,请参阅 OpenSearch 文档中的支持的编解码器

在选择索引编解码器时,请注意以下事项:

  • 为避免更改现有索引的编解码器设置所带来的难题,请在使用新的编解码器设置之前,在非生产环境中测试具有代表性的工作负载。有关更多信息,请参阅更改索引编解码器

  • 您不能将 zstdzstd_no_dict 压缩编解码器用于 k-NN安全分析索引。

  • 已禁止 ZStandard 索引迁移到 UltraWarm 实例