opensearch介绍
2026/9/19 12:39:19 网站建设 项目流程

相关概念

节点分类

节点是一个独立的服务器实例或进程,用于存储数据并参与集群的索引和搜索功能。每个节点都有自己的名称、角色和职责。

master node:负责管理集群的整体状态和执行一些关键的集群级别的操作。主节点负责将分片存储到数据节点、维护集群的状态信息、决定哪些节点是集群的一部分等。本身不负责存储实际的数据。

data node:数据节点负责存储实际的数据。管理索引的分片,并处理与数据相关的操作,如搜索、索引和删除。数据节点存储索引的一部分,并通过将数据分布在多个节点上来实现水平扩展。

coordinating node:协调节点是可选的节点类型,主要用于处理搜索请求的协调工作。不存储实际的数据,而是负责接收来自客户端的搜索请求,并将这些请求转发给数据节点。协调节点有助于分散搜索请求的负载,特别是在大规模集群中。

ingest node:预处理节点,负责数据的预处理,如数据的转换和附加处理。这允许在将数据索引到es之前对数据进行修改或过滤。该节点通常用于日志处理和数据管道中。

machine learning node:用于执行与机器学习相关的任务,如异常检测或趋势分析。

remote-eligible node:远程合格节点,拥有远程集群客户端角色,可以充当远程客户端。默认情况下,集群内任意节点都可以作为跨集群的客户端连接到远程集群。

transform节点:用于执行数据转换操作,例如从一个索引中提取数据并将其转换为另一个索引,以便在数据仓库和分析方面进行使用。

index

索引是一个逻辑存储,类似关系型数据库中的数据库,用来存储管理相关数据,数据以JSON格式存储在索引的基本单元-文档Document。

shard

一条索引的数据往往会被分为多个分片进行存储,每个分片是一个独立的存储单元,底层为一个Lucene索引,可以在集群中的不同节点上分布,以提供高可用性和负载均衡。

分片的目的

允许索引水平分割和分布存储,实现数据和负载的分布。

分片的数量

在索引创建后不能被更改。通常,每个主分片的大小应该适中,以便在集群中的各个节点上均匀分布负载,也有利于数据的快速查询。

主分片

每个索引都可以被分为一个或多个主分片。主分片存储索引的一部分数据,并负责处理搜索和查询操作。主分片的数量设置在索引创建时便被定义,无法进行动态修改。

Replica

副本是指索引的一个复制,每个索引可以被配置为具有零个或多个副本。副本可以提高集群的可用性和容错性,以及提高搜索性能。

每个索引被划分为一个或多个主分片。主分片负责存储索引的一部分数据,以及处理搜索和写入请求。为了提高可用性和容错性,每个主分片可以有零个或多个副本。

每个索引的副本数量是可以配置的。在创建索引时,可以指定副本的数量。副本数量的选择取决于对可用性和性能的需求。

mapping

映射是索引中文档的规范,定义了结构和字段属性,描述了文档中的每个字段的数据类型、分词器、是否索引等信息。类似于关系型数据库中的Schema。

举个例子

PUT/book{"mappings":{properties":{"title":{"type":"text","analyzer":"standard},"author":{"type":"keyword'},"publish date":{"type":"date"},"views":{"type":"integer"},"tags":{"type":"keyword"}}}}

index的名称为book
title是一个文本字段,使用标准分词器
author是一个关键字字段,用于精确匹配
publish_date是一个日期字段
views是一个整数字段
tags是一个关键字字段,用于标签信息

环境

单机+安全

dockerpull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensearchproject/opensearch-dashboardsdockerpull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensearchproject/opensearch# 部署yaml文件mkdir-p/root/opensearch-dockercatdocker-compose.yml version:'3'services: opensearch: image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensearchproject/opensearch:latest container_name: opensearch# restart: unless-stoppedenvironment: -discovery.type=single-node -OPENSEARCH_INITIAL_ADMIN_PASSWORD=YourStrongPass@123 ports: -"9200:9200"-"9600:9600"ulimits: memlock:{soft: -1, hard: -1}nofile:{soft:65536, hard:65536}volumes: - opensearch-data:/usr/share/opensearch/data opensearch-dashboards: image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensearchproject/opensearch-dashboards:latest container_name: opensearch-dashboards# restart: unless-stoppedports: -"5601:5601"volumes: - /root/opensearch-docker/config/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml:ro - /root/opensearch-docker/certs:/usr/share/opensearch-dashboards/config/certs:ro depends_on: - opensearch volumes: opensearch-data:# 加密证书,填写访问ip地址mkdir-p/root/opensearch-docker/certs openssl req-x509-newkeyrsa:2048-nodes\-keyout/root/opensearch-docker/certs/dashboards-key.pem\-out/root/opensearch-docker/certs/dashboards-crt.pem\-days365\-subj"/C=CN/O=MyCompany/CN=192.168.52.1"\-addext"subjectAltName=IP:192.168.52.1,DNS:localhost"# dashboard配置文件mkdir-p/root/opensearch-docker/configcatopensearch_dashboards.yml server.host:"0.0.0.0"server.ssl.enabled:trueserver.ssl.certificate: /usr/share/opensearch-dashboards/config/certs/dashboards-crt.pem server.ssl.key: /usr/share/opensearch-dashboards/config/certs/dashboards-key.pem opensearch.hosts:["https://opensearch:9200"]opensearch.username: admin opensearch.password: YourStrongPass@123 opensearch.ssl.verificationMode: none opensearch_security.cookie.secure:true# 权限chown-R1000:1000 /root/opensearch-docker/certschmod600/root/opensearch-docker/certs/dashboards-key.pemchmod644/root/opensearch-docker/certs/dashboards-crt.pem# 删除、启动docker-composedowndocker-composeup-d# 验证,9200、5601均是加密访问curl-k-uadmin:YourStrongPass@123 https://localhost:9200# 浏览器 https://localhost:5601

多机+安全

# 根CAmkdir-p/root/opensearch-docker/certscd/root/opensearch-docker/certs openssl genrsa-outroot-ca-key.pem4096openssl req-x509-new-nodes\-keyroot-ca-key.pem\-sha256-days3650\-subj"/C=CN/O=MyCompany/CN=MyRootCA"\-outroot-ca.pem# 一套通用节点证书CERT_DIR="/root/opensearch-docker/certs"cd${CERT_DIR}## 私钥:所有节点共用openssl genrsa-outnode-key.pem2048## CSRopenssl req-new-keynode-key.pem\-subj"/C=CN/O=MyCompany/CN=opensearch-node"\-outnode.csr## SAN扩展:把OpenSearch IP + Dashboard IP 全部写进去cat>node.ext<<EOF subjectAltName = IP:192.168.52.129, IP:192.168.52.130, IP:192.168.52.131, IP:192.168.52.1, DNS:localhost EOF## 用根CA签发openssl x509-req-innode.csr\-CA${CERT_DIR}/root-ca.pem\-CAkey${CERT_DIR}/root-ca-key.pem\-CAcreateserial\-out${CERT_DIR}/node.pem\-days365-sha256\-extfile${CERT_DIR}/node.ext## 权限chmod600${CERT_DIR}/node-key.pemchmod644${CERT_DIR}/node.pem${CERT_DIR}/root-ca.pem# root-ca-key.pem不分发# root-ca.pem、node.pem、node-key.pem,手动分发私钥到各节点
# 内核参数sysctl-wvm.max_map_count=262144echo"vm.max_map_count=262144">>/etc/sysctl.confsysctl-p# 先起node-1,9200端口正常,再起node-2、node-3# opensearch节点部署文件services: opensearch: image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensearchproject/opensearch:latest container_name: opensearch network_mode:hostrestart: unless-stopped environment: -cluster.name=my-opensearch-cluster -node.name=node-1# 每台机器改-"node.roles=cluster_manager,data,ingest"-discovery.seed_hosts=192.168.52.129,192.168.52.130,192.168.52.131 -cluster.initial_cluster_manager_nodes=node-1,node-2,node-3 -OPENSEARCH_INITIAL_ADMIN_PASSWORD=YourStrongPass@123 -bootstrap.memory_lock=true -OPENSEARCH_JAVA_OPTS=-Xms4g-Xmx4gulimits: memlock:{soft: -1, hard: -1}nofile:{soft:65536, hard:65536}volumes: - opensearch-data:/usr/share/opensearch/data - /root/opensearch-docker/certs:/usr/share/opensearch/config/certs:ro - /root/opensearch-docker/config/opensearch.yml:/usr/share/opensearch/config/opensearch.yml:ro volumes: opensearch-data:# opensearch节点配置文件cluster.name: my-opensearch-cluster node.name: node-1# 每台机器改node.roles:[cluster_manager, data, ingest]discovery.seed_hosts:["192.168.52.129","192.168.52.130","192.168.52.131"]cluster.initial_cluster_manager_nodes:["node-1","node-2","node-3"]bootstrap.memory_lock:truenetwork.host:0.0.0.0# Transport 层plugins.security.ssl.transport.pemcert_filepath: /usr/share/opensearch/config/certs/node.pem plugins.security.ssl.transport.pemkey_filepath: /usr/share/opensearch/config/certs/node-key.pem plugins.security.ssl.transport.pemtrustedcas_filepath: /usr/share/opensearch/config/certs/root-ca.pem plugins.security.ssl.transport.enforce_hostname_verification:false# HTTP 层plugins.security.ssl.http.enabled:trueplugins.security.ssl.http.pemcert_filepath: /usr/share/opensearch/config/certs/node.pem plugins.security.ssl.http.pemkey_filepath: /usr/share/opensearch/config/certs/node-key.pem plugins.security.ssl.http.pemtrustedcas_filepath: /usr/share/opensearch/config/certs/root-ca.pem# 可信节点证书plugins.security.nodes_dn: -'CN=opensearch-node,O=MyCompany,C=CN'plugins.security.allow_default_init_securityindex:true
# dashboard节点部署文件services: opensearch-dashboards: image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensearchproject/opensearch-dashboards:latest container_name: opensearch-dashboards network_mode:hostrestart: unless-stopped volumes: - /root/opensearch-docker/config/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml:ro - /root/opensearch-docker/certs:/usr/share/opensearch-dashboards/config/certs:ro# dashboard节点配置文件server.host:"0.0.0.0"server.ssl.enabled:trueserver.ssl.certificate: /usr/share/opensearch-dashboards/config/certs/node.pem server.ssl.key: /usr/share/opensearch-dashboards/config/certs/node-key.pem opensearch.hosts:["https://192.168.52.129:9200","https://192.168.52.130:9200","https://192.168.52.131:9200"]opensearch.username: admin opensearch.password: YourStrongPass@123 opensearch.ssl.certificateAuthorities:["/usr/share/opensearch-dashboards/config/certs/root-ca.pem"]opensearch.ssl.verificationMode: full opensearch_security.cookie.secure:true

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询