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

Amazon OpenSearch Service 中编制数据索引

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

有关建立索引的简介,请参阅 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 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 } } ] }