OpenSearch的基本概念和特点
- OpenSearch是由数据存储和搜索引擎(OpenSearch)、可视化和用户界面 (OpenSearch Dashboards) 以及服务器端数据收集器 (Data Prepper) 组成的。
- OpenSearch使用Apache Lucene作为其核心搜索引擎,并提供了与供应商无关的工具集,可以用来构建安全、高性能、经济高效的应用程序。
- OpenSearch提供了一系列插件,以帮助用户扩展其搜索和分析功能,包括增强搜索、分析、可观察性、安全性、机器学习等。
- OpenSearch项目于2021年1月首次宣布,作为Elasticsearch和Kibana的开源分支,旨在提供安全、高质量、完全开源的搜索和分析套件。
- OpenSearch提供了一个全面的项目路线图,并自项目启动以来,已发展到拥有100多个贡献者、数千个拉取请求、数千个问题已解决,并在90多个存储库中进行组织。
- OpenSearch可在Apache 2.0许可证下获得许可,为用户提供了修改、扩展、货币化和转售产品的自由,以及在各种基础设施上部署的灵活性。
- OpenSearch具备高度的可扩展性和灵活性,可以作为端到端解决方案的一部分,或与用户首选的开源工具或合作伙伴项目相连接。
- OpenSearch支持全文查询、自然语言处理、自定义词典和一系列搜索功能,为结构化和非结构化搜索应用程序提供了灵活的基础
下载和安装OpenSearch
- 从OpenSearch的官方网站下载适用于您的操作系统的安装包官网下载地址https://opensearch.org/downloads.html
- 解压下载的安装包
tar -zxvf opensearch-2.7.0-linux-x64.tar.gz
- 将解压后的文件复制到您想要安装的目录下,例如
/home/opensearch/
。
配置单机OpenSearch
配置opensearch.yml
# 指定集群名称和主机名
cluster.name: opensearch-cluster
node.name: vm-dbm-01
# 数据目录
path.data: /opt/opensearch/data
# log目录
path.logs: /opt/opensearch/logs
# 禁用交换内存
bootstrap.memory_lock: true
# 修改监听地址,外部机器也可以访问
network.host: 0.0.0.0
# 默认的端口号
http.port: 9200
# 设置单机模式运行
discovery.type: single-node
配置集群OpenSearch
# ---------------------------------- Cluster -----------------------------------
#
# 指定集群名称和主机名称,同一集群不同实例相同:
#
cluster.name: my-application
#集群时指定不同的node name, 同一集群不同实例唯一
node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#该参数指定节点是否可以被选举为主节点。
#主节点负责管理集群级别的任务,例对索引进行分片和副本分配,以及协调节点之间的数据复制和恢复过程,当一个集群中的主节点失效时,其他节点会重
#新选举一个新的主节点来继续执行这些任务,在一个集群中,最好只有几个节点作为主节点,以避免过多的选举和资源浪费。
#因此,只有少数节点应该设置node.master参##数为trule
node.master: true
#
#
#该参数指定节点是否可以存储数据。
#在一个集群中,数据节点负责存储和处理数据,而非数据节点不存情任何数据,只负责协调和管理集群。
#如果您的应用程序需要对数据进行读取和写入操作,则应该将node#.data参数设置为true.
#1、要创建一lasticsearch集群,您需要在多服务器上分别安装和配置Elastisearch,并将它们组合成一个集群。为了确保集群的稳定性和可靠性,建议您在集群中至少设置3个节点,在种情况下,您可以将两个节点设置为数据节点,另一个节点设置为主节点。
#2、需要注意的是,节点的角色设应该根据您的集群规模和应用程序需求进行调,如果您的集群规模较小,可以将所有节点都没为主节点和数据节点。如果您的集群规模较大,您可以将些节点设置为主节点,其他节点设置为数据节点,以达到更好的性能和可靠性。
node.data: true
#
# ----------------------------------- Paths ------------------------------------
#
#数据目录,同一主机部署时目录需设置不同路径:
#
path.data: /home/opensearch/opensearch-2.7.0/data
# log 目录,同一主机部署时目录需设置不同路径:
path.logs: /home/opensearch/opensearch-2.7.0/logs
#
# ----------------------------------- Memory -----------------------------------
#
# 禁用交换内存:
#
bootstrap.memory_lock: true
#
# ---------------------------------- Network -----------------------------------
#
# 设置主机地址,
#
network.host: 0.0.0.0
#
# 设置http监听端口号,设为-1时禁止http访问:
#
http.port: 9200
#
#
# --------------------------------- Discovery ----------------------------------
#设置为单机运行模式
#discovery.type: single-node
# 如果您想在多台Linux服务器上的Elasticsearch 7.6.2版本之间建立集群,则需要在elasticsearch.yml中设置discovery.seed hosts。这个设置指定了要用于发现其他节点的种子主机列表。在建立集群时,每个节点都应该知道其他节点的存在。如果您已知节点的IP地址或主机名,则可以将其添加到此列表中。如果您使用的是DNS,则可以将主机名添加到此列表中。Elasticsearch会尝试连接列表中的所有主机,直到找到其他节点。
#默认情况下,discovery.seed hosts设置为空,这意味着节点将不会尝试发现其他节点。因此,如果您想建立集群,则需要设置discovery.seed hosts。将其设置为一个包含其他节点IP地址或主机名的列表,以便节点在启动时能够找到其他节点。
#示例配置:
#discovery.seed hosts:["192.168.1.100","192.168.1.101"] 应该是其他节点的IP地址,而不是当前节点的IP地址
#这将指定两个IP地址作为种子主机,节点将尝试连接这些主机以发现其他节点。
#节点之间的通信默认使用9300端口 (用于节点之间的不需要指定端口号。这是因为在Elasticsearch中,传输和协调)和9200端口(用于HTTP REST API)
#
discovery.seed_hosts: ["x.x.x.x", "x.x.x.x"]
#
# 如果您不设置cluster.initial master nodes,则Elasticsearch将使用默认设置: 节点名称为"node-1"的节点将成为初始主节点。这意味着如果您的节点名称不是"node-1",则您的节点将不会成为初始主节点,也就无法管理集群状态和分配分片等任务因此,建议在elasticsearch.yml中设置cluster.initial master nodes,以确保集群中有足够的初始主节点。
#示例配置:cluster.initial master nodes: ["node1", "node2"这将指定两个节点作为初始主节点,节点名称为"node1"和"node2”,在启动集群时,Elasticsearch将使用这些节点作为初始主节点的候选节点,并选择其中一个作为初始主节点。建议将初始主节点的数量设置为奇数,以便在发生故障时能够进行正确的投票和决策。
#
#cluster.initial_cluster_manager_nodes: ["node-1", "node-2"]
cluster.initial_master_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# 默认情况下,gateway.recover after nodes设置为1。这意味着当集群中启动一个节点时,就开始执行恢复操作。如果您的集群中有多个节点,则建议将其设置为一个大于1的值,以确保在集群中启动足够的节点后再执行恢复操作。
#恢复操作是指在节点重新启动或加入集群时,Elasticsearch自动恢复丢失或损坏的索引分片。索引分片是Elasticsearch中的基本存储单元,它将索引数据分成多个部分以便分布式存储和处理。当一个节点重新启动或加入集群时,它可能会丢失一些索分片,导致数据不完整或不可用。为了解决这个问题,Elasticsearch会自动执行恢复操作,将丢失的分片从其他节点复制回来,以确保数据的完整性和可用性。
#默认情况下,Elasticsearch在启动时会自动执行恢复操作,以确保集群中的所有分片都可用。但是,如果集群中的节点数量太少,则可能会导致性能下降。因此,可以使用gateway.recover after nodes设置来指定在集群中启动多少个节点后才开始执行恢复操作。这个设置可以帮助您优化集群的性能和可用性。
#
gateway.recover_after_nodes: 3
#
#
# ---------------------------------- Various -----------------------------------
#
# 在不同的服务器上,action.destructive.requires name有不同的意义这个设置用于确保在执行破坏性操作(例如删除索引)时需要提供名称,默认情况下,这个值是假,这意味着可以执行破坏性操作而无需提供名称。为了防止意外操作,建议将其设置为真。
#
#action.destructive_requires_name: true
#
# ---------------------------------- Remote Store -----------------------------------
# Controls whether cluster imposes index creation only with remote store enabled
# cluster.remote_store.enabled: true
#
# Repository to use for segment upload while enforcing remote store for an index
# cluster.remote_store.repository: my-repo-1
#
# Controls whether cluster imposes index creation only with translog remote store enabled
# cluster.remote_store.translog.enabled: true
#
# Repository to use for translog upload while enforcing remote store for an index
# cluster.remote_store.translog.repository: my-repo-1
#
# ---------------------------------- Experimental Features -----------------------------------
#
# Gates the visibility of the index setting that allows changing of replication type.
# Once the feature is ready for production release, this feature flag can be removed.
#
#opensearch.experimental.feature.replication_type.enabled: false
#
#
# Gates the visibility of the index setting that allows persisting data to remote store along with local disk.
# Once the feature is ready for production release, this feature flag can be removed.
#
#opensearch.experimental.feature.remote_store.enabled: false
#
#
# Gates the functionality of a new parameter to the snapshot restore API
# that allows for creation of a new index type that searches a snapshot
# directly in a remote repository without restoring all index data to disk
# ahead of time.
#
#opensearch.experimental.feature.searchable_snapshot.enabled: false
#
#
# Gates the functionality of enabling extensions to work with OpenSearch.
# This feature enables applications to extend features of OpenSearch outside of
# the core.
#
#opensearch.experimental.feature.extensions.enabled: false
#
#
# Gates the search pipeline feature. This feature enables configurable processors
# for search requests and search responses, similar to ingest pipelines.
#opensearch.experimental.feature.search_pipeline.enabled: false
启动OpenSearch
后台启动
./opensearch-tar-install.sh -d
验证是否启动成功
curl -XGET http://localhost:9200/_cat/plugins?v -u 'admin:admin'
下载和安装OpenSearch Dashboards
下载安装包
官网下载地址https://opensearch.org/downloads.html
解压下载的安装包
tar -zxvf opensearch-dashboards-2.7.0-linux-x64.tar.gz
配置OpenSearch Dashboards
# 添加监听地址,外部机器也可以访问
server.host: 172.18.250.171
#设置中文
i18n.locale: "zh-CN"
opensearch.hosts: ["https://172.18.250.171:9200"]
# 以下参数不需要修改,默认即可
opensearch.username: "kibanaserver"
opensearch.password: "kibanaserver"
opensearch.requestHeadersWhitelist: [ authorization,securitytenant ]
设置防火墙(9200、9300是OpenSearch server;5601是opensearch-dashboards)
firewall-cmd --permanent --add-port={9200/tcp,9300/tcp,5601/tcp}
重新加载防火墙
firewall-cmd --reload
启动OpenSearch Dashboards
后台启动
nohup ./opensearch-dashboards &
启动后可以通过浏览器进行访问,账号密码admin/admin