本章将带你开启 OpenSearch 的探索之旅,深入了解其基础概念,以及如何搭建与配置 OpenSearch 环境。从关键术语入门,到在不同平台安装 OpenSearch、配置集群、考虑安全要点,再到初步体验核心功能,本章可作为新手与爱好者的完整上手指南。我们将围绕以下主题展开,夯实 OpenSearch 架构所依赖的关键术语与概念:
- 了解关键术语
- 集群基础:OpenSearch 的中枢骨架
- 索引洞察:在 OpenSearch 中组织数据
- 系统要求与兼容性
- OpenSearch 安装指南
- 配置 OpenSearch Dashboards
- 高级集群配置的基础铺垫
- 初步探索 OpenSearch 的功能
了解关键术语
本节将介绍与 OpenSearch 相关的核心术语。我们会解释 节点(node) 、集群(cluster) 、索引(index) 、分片(shard) 与 副本(replica) 等概念,为理解 OpenSearch 的架构与运行机制打下扎实基础。熟悉这些术语,有助于你进一步把握 OpenSearch 集群如何协同工作。
节点基础(Nodes basics)
在 OpenSearch 中,节点是构成集群的基本单元。每个节点都承担系统中的某些职责,例如存储、索引、搜索或协调请求。大规模部署时,通常将不同类型的节点分别运行在不同机器上;而在小型或开发环境中,也可以在同一台机器上以多个进程的方式承载多种角色。
在搭建基础环境时,区分必需与可选的节点类型非常重要。下面分别介绍各类节点及其功能。
数据节点(Data nodes,生产环境必需)
- 功能:保存与管理索引的主分片与副本分片,并在集群内均衡分担负载。
- 重要性:对数据韧性(发生服务器故障或自然灾害等异常时,数据仍可恢复并保持安全)、容错性(部分组件失效时系统仍能正常工作)与高可用性(系统随时可用,避免意外中断)至关重要。
- 用例:承担数据存储与读取、支持搜索查询、促成实时分析等核心任务。
集群管理节点(Cluster manager nodes,必需)
先前称为 master nodes。
- 功能:维护集群状态,编排索引创建/删除,处理全局性变更(如节点的加入与移除)。
- 重要性:确保集群稳定性与一致的性能,并支撑平滑扩展。
- 用例:负责整体健康状况管理、节点状态监测,以及集群升级与配置变更等管理性操作。
摄取节点(Ingest nodes,可选)
- 功能:在写入索引之前对进入的数据进行预处理,包括转换、富化与过滤。
- 重要性:优化数据摄取流程,提升索引性能,并通过清洗与富化提高数据质量。
- 用例:常用于日志处理、数据富化与实时数据分析,帮助高效接入并处理海量数据流。
协调节点(Coordinating nodes,可选)
- 功能:作为客户端与数据节点之间的中介:接收来自客户端的搜索/索引请求,将其分发到合适的数据节点处理,并在返回前对结果进行聚合与合并。
- 重要性:均衡查询负载,提升搜索性能与扩展性;同时为客户端提供统一入口,简化通信。
- 用例:在分布式环境下承接搜索与查询工作流,适用于实时分析、全文检索、数据探索等场景。
机器学习节点(Machine learning nodes,可选)
- 功能:为 ML 训练与推理提供底层运行环境与算力,使模型可在 OpenSearch 集群内原生运行。
- 重要性:为高级分析与 AI 模型执行提供计算框架,助力从海量数据中萃取可行动洞察,支撑智能决策。
- 用例:异常检测、预测分析、推荐系统、自然语言处理等多种机器学习任务。
在了解了各类节点的职责之后,接下来我们将看看这些节点如何在 OpenSearch 环境中协同组成一个集群。
集群基础:OpenSearch 的中枢骨架
OpenSearch 集群具备分布式特性,结合冗余数据存储、负载均衡与自愈机制,能够为关键任务级的搜索与分析应用提供所需的可扩展性、容错性与高可用性。
OpenSearch 的集群架构是整个平台的中枢,支撑其核心功能与可扩展性能。通过将多个节点(各自承担前文所述的不同角色)连接在一起,集群作为一个协调一致的分布式系统运行。该架构促进高效的数据存储、实时处理与高可用,确保任务被智能分配、系统保持容错。你可以把集群看作一支高度协同的团队,每个节点都在为共同目标贡献力量。搭建 OpenSearch 集群通常包括以下关键步骤:
- 节点准备(Node provisioning) :为节点部署所需资源与配置。节点既可在本地机房,也可在云端。
- 互联(Interconnection) :在节点之间建立网络连接,确保通信与数据共享顺畅。
- 配置(Configuration) :设置集群参数、定义节点角色、配置副本机制,并落实安全措施以保护数据完整性。
- 引导(Bootstrap) :通过选举集群管理节点并建立**仲裁(quorum)**来初始化集群一致性。
- 扩展(Scaling) :随着数据规模与用户需求增长,按需增加节点以维持性能、应对更高负载。
集群实战(CLUSTER IN ACTION)
设想一家电商平台使用 OpenSearch 集群来驱动搜索与推荐功能。平台部署了数据节点、集群管理节点、协调节点与机器学习节点的组合,从而为数百万用户提供快速且个性化的购物体验。在购物高峰期,集群通过增加节点横向扩展,以维持高性能与高可靠性,确保用户体验流畅无缝。
既然我们已经明确了 OpenSearch 集群在提供可扩展、容错与高可用方面的关键作用,接下来深入了解在这一坚实基础上展开的索引能力。
索引洞察:在 OpenSearch 中组织数据
在 OpenSearch 中,索引(index)是具备共同模式(schema)的一组文档的结构化集合。它类似于传统系统中的数据库表,是存放、检索与管理相关数据的主要容器。
索引帮助高效地组织数据,便于搜索、过滤与分析。理解索引的工作方式,是在 OpenSearch 集群中有效管理与查询数据的关键。在搜索引擎语境中,索引本质上是一个逻辑命名空间,映射到主分片与副本分片,以实现高效的检索与召回。下面是与索引相关的几个核心概念:
- 文档(Documents) :OpenSearch 中被索引的信息基本单元。每个文档由若干**字段(key-value)**构成,用于承载具体数据。
- 分片(Shards) :索引被划分为多个分片,即索引的分区。每个分片都是一个功能完整、相对独立的“子索引”,可托管在集群内任意节点上。
- 副本(Replicas) :索引副本是对索引中所有主分片的拷贝。一个索引可以有 0 个或多个副本,每个副本包含对应的副本分片。副本提供冗余,确保高可用与容错,并可提升搜索吞吐。当某个节点故障时,数据仍可从副本分片访问。
- 段(Segments) :段是数据存储与检索的最小单位。每个分片进一步由多个段构成,段的管理对索引与搜索性能至关重要。
分片如何工作(How shards work)
当你索引一个文档时,OpenSearch 会基于哈希算法将其分配到某个主分片。每个分片负责索引数据的一部分。例如,一个索引若有 5 个主分片,则每个分片大致承担 20% 的数据。当执行搜索查询时,OpenSearch 会将查询分发到所有相关分片;每个分片在自身数据子集上处理查询并返回结果,随后 OpenSearch 将这些结果聚合为统一响应。
分片的收益包括:
- 可扩展性:将数据分布在多个分片上,高效承载海量数据。
- 并行处理:分片支持并行执行搜索查询,缩短响应时间。
- 容错性:副本分片提供数据冗余,节点故障时仍能保障数据可用。
分片实战(SHARDS IN ACTION)
设想一家电商平台用 OpenSearch 管理其商品目录。该目录索引包含 5 个主分片与 1 份索引副本(对应 5 个副本分片)。这种布局将商品数据分布在整个集群,实现高效检索与召回。一旦某个节点发生故障,副本分片可确保商品数据仍然可用,从而维持无缝的购物体验。
段如何工作(How segments work)
当文档被写入 OpenSearch 索引时,它首先进入内存段(in-memory segment) ,这是一种临时数据结构,用于快速写入与即时可查。OpenSearch 会周期性地将内存段刷新(flush)到磁盘,生成新的磁盘段(on-disk segment) ,确保数据被持久化,即便系统重启或发生故障也能访问。磁盘段是 OpenSearch 索引的基础存储单元,负责承载已索引的数据。
为优化性能并控制段数量,OpenSearch 会定期合并较小的磁盘段为更大的段,这一过程称为段合并(segment merging) 。合并对于保持索引效率至关重要:过多的小段会带来额外开销并降低查询性能。通过将小段合并为大段,OpenSearch 能减少段的数量,提升查询性能并降低整体存储开销。段合并由 OpenSearch 的内部机制自动管理,确保索引随时间保持良好状态。
段的收益包括:
- 并行搜索:OpenSearch 可在多个段上并行搜索,从而提升性能。
- 高效更新:更新与删除通过在当前段中标记旧文档为过期,并将新版本写入新段来实现。
- 高可用:段会在多个节点间进行副本复制,即便节点故障也能保证数据持久性与可用性。
现在,你已经掌握了 OpenSearch 的基础:节点、集群、索引、分片与段,并理解了它如何组织与管理数据。接下来,让我们更深入地进入搭建与配置 OpenSearch 集群的实践环节。
系统要求与兼容性
在搭建 OpenSearch 集群之前,务必确认你的系统满足必要要求并与 OpenSearch 软件兼容。了解系统要求有助于顺利完成安装,并确保集群获得最佳性能。
操作系统兼容性矩阵
OpenSearch 与 OpenSearch Dashboards 兼容多种 Linux 发行版与 Windows Server 版本。虽然在多数 Linux 发行版上预期都能运行,但官方重点测试了以下系统:
表 2.1:操作系统兼容性矩阵
| 操作系统 | 支持版本 |
|---|---|
| CentOS | 8 |
| Rocky Linux | 8 |
| Alma Linux | 8 |
| Amazon Linux | 2 / 2023 |
| Ubuntu | 24.04 LTS |
| Windows Server | 2022 |
Java 兼容性矩阵
OpenSearch 依赖兼容的 Java 运行时环境(JRE)。每个 OpenSearch 发行版通常会捆绑特定版本的 Adoptium JDK,同时也兼容若干其他 JDK 版本。为获得最佳性能与兼容性,推荐使用随 OpenSearch 安装包提供的捆绑 Java 版本。下表列出了不同 OpenSearch 版本支持的 Java与捆绑的 Java:
表 2.2:Java 版本兼容性
| OpenSearch 版本 | 兼容的 Java 版本 | 捆绑的 Java 版本 |
|---|---|---|
| 1.0–1.2.x | 11, 15 | 15.0.1+9 |
| 1.3.x | 8, 11, 14 | 11.0.23+9 |
| 2.0.0–2.11.x | 11, 17 | 17.0.2+8 |
| 2.12.0+ | 11, 17, 21 | 21.0.5+11 |
若需使用不同的 Java 安装,请通过设置 OPENSEARCH_JAVA_HOME 或 JAVA_HOME 环境变量来指定 Java 路径:
export OPENSEARCH_JAVA_HOME=/path/to/opensearch-2.19.2/jdk
网络配置
以下网络端口用于 OpenSearch 组件的正常运行。这些为默认设置,可根据需要在 opensearch.yml 中进行修改:
表 2.3:网络要求
| 端口号 | 对应的 OpenSearch 组件 |
|---|---|
| 443 | 启用 TLS 的 Amazon OpenSearch Service 上的 OpenSearch Dashboards |
| 5601 | OpenSearch Dashboards |
| 9200 | OpenSearch RESTful API |
| 9300 | 集群内部节点间通信、传输与跨集群搜索 |
| 9600 | OpenSearch Performance Analyzer |
推荐的文件系统设置(以获得更好的性能)
现在我们已完成系统要求与兼容性的说明。下一节将演示如何在不同平台上实际安装 OpenSearch 集群。继续阅读,开始动手吧!
OpenSearch 安装指南(Installation guide for OpenSearch)
OpenSearch 支持在多种平台上安装部署,如 Docker、Helm、Windows、RPM、Debian 等。这种多样性保证了它能融入各类环境与工作流。本文将带你在本地笔记本或 VM 服务器 上完成 OpenSearch 的安装与体验,帮助你获得动手实践与对安装流程的扎实理解。更详细的官方安装说明见:opensearch.org/docs/latest…。
本节将演示两种在本地安装 OpenSearch 的方式:tarball 与 Docker。这两种方法简单直接,适合开发与测试。按照下面步骤,你即可在笔记本或 VM 上启动一个 OpenSearch 实例。
使用 tarball 安装(Using a tarball)
从 tarball(压缩包) 安装适合希望精细掌控安装细节的用户。你可以自主决定文件放置位置与权限设置,相比预制安装器或系统包更灵活。下载的 tarball 自带运行所需的一切(含所需的 Java) ,属于自包含包。该方法兼容大多数 Linux 发行版(如 CentOS 7、Amazon Linux 2、Ubuntu 18.04)。在 macOS 上也可使用(需已正确安装并配置 Java)。
步骤 1:下载并解压 OpenSearch tarball
访问 OpenSearch 官方下载页面并获取所需版本。本文以 OpenSearch 2.19.2 为例:
- 访问下载页:opensearch.org/downloads.h…
- 选择需要的版本(如 2.19.2)
- 下载 tarball 到本地,然后解压
mkdir -p The_Definitive_guide_to_OpenSearch
cd The_Definitive_guide_to_OpenSearch
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.19.2/opensearch-2.19.2-linux-x64.tar.gz
# 解压
tar -zxvf opensearch-2.19.2-linux-x64.tar.gz
步骤 2:启动并自检 OpenSearch(Start and test)
在继续之前,先验证安装是否正常。你可以选择开启安全或关闭安全两种方式进行测试。
开启安全(With security enabled)
运行随压缩包提供的 demo 安全脚本。该脚本会设置基础配置、环境变量并应用自签名 TLS 证书。
# 为默认用户 "admin" 设置初始密码
export OPENSEARCH_INITIAL_ADMIN_PASSWORD=<your_password>
# 进入解压目录
cd opensearch-2.19.2
# 使用安全演示配置启动
./opensearch-tar-install.sh
在新终端中通过 curl 验证 9200 端口(因为是自签名证书,需要 --insecure):
curl -X GET https://localhost:9200 -u 'admin:<your_password>' --insecure
你应看到类似如下响应(示例节选):
{
"name": "ip-10-0-27-104.ec2.internal",
"cluster_name": "opensearch",
"version": {
"distribution": "opensearch",
"number": "2.19.2",
"build_type": "tar",
"lucene_version": "9.10.0"
},
"tagline": "The OpenSearch Project: https://opensearch.org/"
}
关闭安全(With security disabled)
如果你仅想确认服务是否就绪,并计划稍后自行配置安全设置,可禁用 Security 插件并以无加密/无认证方式启动:
- 编辑
config/opensearch.yml,加入:
plugins.security.disabled: true - 启动并验证:
./opensearch-tar-install.sh
curl -X GET http://localhost:9200
你应获得与开启安全时类似的响应(只是协议与认证不同)。
注意(NOTE)
demo 安全脚本仅适用于测试,不适用于生产。上线前务必替换演示证书,并正确配置用户认证与授权策略。
使用 Docker 安装(Using Docker)
Docker 能大幅简化 OpenSearch 集群的搭建与管理。你可以从 Docker Hub 或 Amazon ECR 拉取官方镜像,并使用 Docker Compose 快速编排(本书的 GitHub 也提供示例 compose 文件)。高级用户可以自定义 Compose 文件以满足特定需求。本章先用低层级的 docker pull + docker run 演示最核心流程。
- 确认系统已安装 Docker(docs.docker.com/get-docker/),验证:
docker --version
2. 拉取镜像
docker pull opensearchproject/opensearch:latest
3. 运行容器
docker run -d --name opensearch \
-p 9200:9200 -p 9600:9600 \
-e "discovery.type=single-node" \
-e "OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password>" \
opensearchproject/opensearch:latest
命令说明:
-d:后台运行--name opensearch:容器命名为 opensearch-p 9200:9200 -p 9600:9600:映射 HTTP(9200)与 Performance Analyzer(9600)端口-e "discovery.type=single-node":单节点模式,适合开发/测试-e "OPENSEARCH_INITIAL_ADMIN_PASSWORD":为 2.12+ 版本设定 admin 密码(必需)
- 验证安装
curl -X GET "localhost:9200" --insecure -u user:password
你将看到包含节点信息的 JSON 响应,例如:
{
"name": "dd45618cdg5",
"cluster_name": "docker-cluster",
"version": {
"distribution": "opensearch",
"number": <version>,
"build_type": <build-type>,
"lucene_version": <lucene-version>
},
"tagline": "The OpenSearch Project: https://opensearch.org/"
}
按照上述步骤,你即可启动并自检 OpenSearch,确保环境正确无误,再继续进行更高级的配置。下一节我们将安装 OpenSearch Dashboards,以可视化并交互式地探索存储在 OpenSearch 集群中的数据。
配置 OpenSearch Dashboards
OpenSearch Dashboards 为可视化地探索、发现和查询可观测性数据提供了一套完整方案。它支持通过多种方式安装,包括 Docker、Helm、Windows、RPM、Debian 等。不同安装方式都兼顾灵活性与易用性,你可以按环境与需求选择最合适的方案。无论是手动使用 tarball 安装,还是用 deb/rpm 打包安装,OpenSearch Dashboards 都能与 OpenSearch 集群无缝集成,帮助你释放数据价值、获得可操作的洞察。
使用 tarball(本地)
安装 OpenSearch Dashboards 的流程与 OpenSearch 类似:先下载与你操作系统匹配的 tarball,再解压并配置 Dashboards 连接到你的 OpenSearch 集群。
以 OpenSearch Dashboards 2.19.2 为例:
- 访问下载页:opensearch.org/downloads.h…
- 选择所需版本(如 2.19.2)并下载 tarball 到本机。
示例命令:
# 切到书籍工作目录
cd The_Definitive_guide_to_OpenSearch
# 下载 OpenSearch Dashboards tarball
wget https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.19.2/opensearch-dashboards-2.19.2-linux-x64.tar.gz
解压:
tar -zxvf opensearch-dashboards-2.19.2-linux-x64.tar.gz
启动 OpenSearch Dashboards:
# 进入解压目录
cd opensearch-dashboards-2.19.2
# 启动
./bin/opensearch-dashboards
启动后,用浏览器访问 http://localhost:5601 即可进入 OpenSearch Dashboards 界面,开始探索与可视化数据(见图 2.1:OpenSearch Dashboards 登录页)。
使用 Docker
如果更偏好容器化部署,可以用 Docker 安装 OpenSearch Dashboards:
- 拉取镜像
docker pull opensearchproject/opensearch-dashboards:latest
2. 运行容器
docker run -d --name opensearch-dashboards \
-p 5601:5601 \
-e "OPENSEARCH_HOSTS=http://localhost:9200" \
opensearchproject/opensearch-dashboards:latest
参数说明:
-d:后台运行--name opensearch-dashboards:容器命名-p 5601:5601:映射 Dashboards 端口-e "OPENSEARCH_HOSTS=http://localhost:9200":配置 Dashboards 连接到本机 9200 上运行的 OpenSearch
- 验证安装
在浏览器访问 http://localhost:5601,应能看到 Dashboards 界面(见图 2.1)。
按照上述细化步骤,你已拥有可正常运行的 OpenSearch 环境:既包含 OpenSearch,也包含 OpenSearch Dashboards。这一基础为后续发挥 OpenSearch 的强大搜索与分析能力奠定了良好起点。完成安装与验证后,你可以继续探索更高级的集群配置,以在性能、可靠性与可扩展性方面进一步优化。
为高级集群配置打好基础
在完成 OpenSearch 的基础安装之后,是时候深入更高级的设置,以充分发挥部署的价值了。
本节将引导你完成一系列关键配置与策略,以提升 OpenSearch 集群的性能、可靠性与可扩展性。我们将覆盖集群设置、节点角色、分片分配、数据副本策略等关键主题,确保你的集群稳健并能满足组织需求。
理解并落实这些高级配置后,你将能够管理一个高性能且具韧性的 OpenSearch 集群,胜任多种工作负载与应用场景。下面一起进入集群配置的要点与最佳实践。
OpenSearch 集群设置:静态与动态
OpenSearch 的集群设置用于控制集群的行为与性能,分为两类:静态(static)与动态(dynamic) 。
静态设置(Static settings)
需要重启节点后生效,通常写在 opensearch.yml,用于决定集群的核心行为与结构。常见示例如下:
-
集群名(Cluster name) :用于区分多集群:
cluster.name: definitive-guide-to-opensearch -
节点名(Node name) :标识集群中的节点:
node.name: my-data-1 -
节点角色(Node roles) :为节点指定一个或多个角色。可选值:
cluster_manager、data、ingest、search、ml、remote_cluster_client、coordinating_only:node.role: data -
数据路径(Data path) :数据存放目录,可用逗号分隔多个路径:
path.data: [/path/1, /path/2] -
网络设置(Network settings) :配置节点监听的网卡与端口:
network.host: 0.0.0.0 http.port: 9200 -
发现(Discovery)设置:是形成集群的关键,用于发现可用节点并选举集群管理节点(原 master)。正确配置可确保节点间通信顺畅、集群稳定:
discovery.seed_hosts: ["host1", "host2"] cluster.initial_master_nodes: ["node-1", "node-2"]
动态设置(Dynamic settings)
可在不停机的情况下修改,通过 REST API 应用,便于按运行态需求调优。使用 _cluster/settings 接口,例如更新分片分配策略:
curl -X PUT "localhost:9200/_cluster/settings" \
-H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}'
OpenSearch Dashboards 设置
通过编辑 opensearch_dashboards.yml 配置 OpenSearch Dashboards 的行为与功能。常见关键项:
-
服务器配置(Server configuration) :
server.host: "0.0.0.0" server.port: 5601 -
OpenSearch 连接(Connection) :
opensearch.hosts: ["http://localhost:9200"] -
安全配置(Security) (若集群启用了安全):
opensearch.username: "admin" opensearch.password: "<your_password>" -
TLS/SSL 配置:
server.ssl.enabled: true server.ssl.certificate: /path/to/your/cert.pem server.ssl.key: /path/to/your/key.pem
NOTE
上述仅列出 OpenSearch 与 OpenSearch Dashboards 的常用设置。更多可用的静态/动态设置参见:
opensearch.org/docs/latest…
安全考量与设置
保护 OpenSearch 环境对于数据安全与合规至关重要。本节概览集群安全的高层实践,包括启用 TLS、以及**认证(Authentication)与授权(Authorization)**机制。
启用 TLS
TLS 用于加密 OpenSearch 节点与客户端之间的通信,确保隐私与完整性。启用 TLS 需要同时配置服务端与客户端。
服务端 TLS 配置
为保护 OpenSearch 对外接口,请在服务端:
- 使用 OpenSearch Security 插件生成自签名证书,或从受信任 CA 获取证书;
- 安全保存证书与私钥;
- 在
opensearch.yml中添加(示例为 JKS 存储):
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.keystore_type: JKS
plugins.security.ssl.transport.keystore_filepath: keystore.jks
plugins.security.ssl.transport.keystore_password: changeit
plugins.security.ssl.transport.truststore_type: JKS
plugins.security.ssl.transport.truststore_filepath: truststore.jks
plugins.security.ssl.transport.truststore_password: changeit
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.keystore_type: JKS
plugins.security.ssl.http.keystore_filepath: keystore.jks
plugins.security.ssl.http.keystore_password: changeit
plugins.security.ssl.http.truststore_type: JKS
plugins.security.ssl.http.truststore_filepath: truststore.jks
plugins.security.ssl.http.truststore_password: changeit
重启节点使配置生效:
sudo systemctl restart opensearch
客户端 TLS 配置
完成服务端 TLS 后,还需确保客户端(例如 OpenSearch Dashboards)配置为使用 TLS并信任服务端证书:在客户端配置中指向正确的 CA/证书 文件,以便校验 OpenSearch 的身份并建立安全连接。
NOTE
同时配置服务端与客户端的 TLS,可在 OpenSearch 与其生态组件之间建立端到端的安全通道,防止窃听与篡改。
引入认证与授权
强认证与细粒度授权能确保只有被允许的用户可访问你的集群与数据。
- 认证(Authentication)
OpenSearch 支持多种方法:Basic、LDAP、Kerberos、SAML、OpenID Connect。在opensearch.yml中配置所需方法。 - 授权(Authorization)
定义角色与权限以控制对索引与集群操作的访问;通过 roles mapping 将用户映射到合适的角色。
NOTE
本节为安全的高层概览。关于认证与授权的完整实践,将在第 12 章详述:如何配置多种认证方式、定义角色、用户–角色映射,以及访问控制的最佳实践。
在完成上述高级配置基础后,下一节将带你动手体验 OpenSearch 的初始功能:在集群中进行数据的索引与查询。
初步探索 OpenSearch 的功能
在本节中,你将学习如何与集群交互,包括查询与索引数据。我们会先从本章的基础 CRUD(创建、读取、更新、删除) 操作入手;从第 4 章开始,你将进一步学习更高级的主题,如索引文档、执行搜索查询、以及配置 mapping 与 analyzer。读完本节,你将对如何使用 OpenSearch 有一个系统认识,为后续章节的进阶内容打下基础。现在,让我们一起深入了解 OpenSearch 的核心功能吧!
为开启对 OpenSearch 索引与搜索的探索,让我们继续跟随主角 Iva 的购物之旅。整个过程中,我们将用 Iva 的购物体验以及其他数据集来演示 OpenSearch 中与索引与检索相关的概念。
为 Iva 的“时髦发现”建立索引
Iva 在最爱的时尚电商上浏览时,看到了一条惊艳的连衣裙,便想收藏以便后续参考。对应到 OpenSearch 的语境,你可以将这条裙子表示为一个文档(document) ,并将其索引到集群中。
下面演示如何在 OpenSearch 中索引这条“裙子”文档:
POST /fashion/_doc
{
"product_id": "123456",
"name": "Floral Print Maxi Dress",
"category": "Dresses",
"price": 59.99,
"color": "Blue",
"size": ["S", "M", "L"],
"description": "Elevate your summer style with this gorgeous floral maxi dress. Featuring a vibrant blue hue and a flattering silhouette, this dress is perfect for any outdoor occasion.",
"tags": ["floral", "maxi", "summer", "blue"],
"rating": 4.8,
"in_stock": true
}
在上述示例中,我们把这条裙子文档写入名为 fashion 的索引。该文档包含多种属性:商品 ID、名称、类别、价格、颜色、尺码、描述、标签、评分以及库存状态等。
索引完成后,我们继续看看如何用 OpenSearch 搜到更多相似的裙子。
寻找更多灵感(搜索)
受到这条裙子的启发,Iva 想要探索更多具有相似特征的连衣裙。借助 OpenSearch,她可以执行搜索查询以匹配自己的偏好。
下面这条简单的 match 查询会查找描述中包含 floral(花卉元素)的裙子:
GET /fashion/_search
{
"query": {
"match": {
"description": "floral"
}
}
}
Iva 还可以进一步添加颜色、价格区间、尺码等条件来细化搜索结果。
小结
本章我们回顾了 OpenSearch 的基础:包括节点架构、集群配置以及安全要点。到此你应已理解 OpenSearch 的工作机制,并能搭建与配置一个基础集群。
下一章我们将进入 OpenSearch 的部署选项,重点介绍 Amazon OpenSearch Service、Amazon OpenSearch Serverless,以及社区提供的与云平台解耦的解决方案,用于在大规模场景下部署与管理 OpenSearch。
让我们在下一章一起探索托管服务与 Serverless 部署的世界吧!