在 Amazon OpenSearch 服务中为数据编制索引 - 亚马逊 OpenSearch 服务

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

在 Amazon OpenSearch 服务中为数据编制索引

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

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

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

索引的命名限制

OpenSearch 服务索引有以下命名限制:

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

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

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

不要在索引、类型或文档 ID 名称中包含敏感信息。 OpenSearch 服务在其统一资源标识符 (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 年患了流感。

如果 Ser OpenSearch vice 在索引名称中检测到真实或感知的 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 服务响应的大小,但要注意不要筛选出识别或重试失败请求所需的字段。这些字段会因客户端而异。该filter_path参数适用于所有 S OpenSearch ervice 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

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

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

  • 您不能将 Zstandard 压缩编解码器"index.codec": "zstd""index.codec": "zstd_no_dict")用于 k-nn 索引或安全分析索引。