Elasticsearch 简介与安装
简介
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库—无论是开源还是私有。
但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。
Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。
然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:
- 一个分布式的实时文档存储,每个字段 可以被索引与搜索
- 一个分布式实时分析搜索引擎
- 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
安装方式
- 源码包安装(可到官网下载地址下载linux、mac、windows对应的源码包)- 本文使用该方式安装到 linux
- apt 或 yum 在线安装
- rpm安装
- docker安装等
官网地址
官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/8.6/getting-started.html
最新版本下载地址:https://www.elastic.co/cn/downloads/elasticsearch
源码包下载
本文的下载版本为:elasticsearch-8.6.2-linux-x86_64.tar.gz (8.6.2)
安装
1. 解压 elasticsearch-8.6.2-linux-x86_64.tar.gz
解压后的目录如下:
- bin:es相关命令目录
- config:es相关配置目录,主要包括 elasticsearch.yml 等,TLS密钥证书等默认生成在此目录的 certs 目录下。certs 在首次启动es的时候才会生成
- data:节点上分配的每个索引/分片的数据文件的位置(启动之后才会生成,可通过 path.data 配置),默认在$ES_HOME/data目录,建议配置在$ES_HOME之外的目录,避免ES在升级的时候被覆盖
- logs:日志文件目录(可通过 path.logs 配置)默认在$ES_HOME/logs目录,建议配置在$ES_HOME之外的目录,避免ES在升级的时候被覆盖
- plugins:插件存放目录(比如我们后续要安装的ik中文分词器插件)
- jdk:自带的 jdk 目录,可进入目录后执行java -version 查看其版本
建议更改配置目录、数据目录和日志目录的默认位置 这些配置都在 elasticsearch.yml 中。
启动
./bin/elasticsearch
首次启动 Elasticsearch 时,默认情况下会启用和配置安全功能。以下配置会自动生成:
- 启用 elastic 用户的身份验证和授权,设置为内置超级用户生成并打印密码。
- 生成 TLS 的证书和密钥,并使用这些密钥和证书启用和配置 TLS。
- 为 Kibana 生成注册令牌,有效期为 30 分钟。
以上生成的内容大概如下:
The generated password for the elastic built-in superuser is:
<password>The enrollment token for Kibana instances, valid for the next 30 minutes:
<enrollment-token>The hex-encoded SHA-256 fingerprint of the generated HTTPS CA DER-encoded certificate:
<fingerprint>You can complete the following actions at any time:
Reset the password of the elastic built-in superuser with
'bin/elasticsearch-reset-password -u elastic'.Generate an enrollment token for Kibana instances with
'bin/elasticsearch-create-enrollment-token -s kibana'.Generate an enrollment token for Elasticsearch nodes with
'bin/elasticsearch-create-enrollment-token -s node'.
示例图
注:elastic 的密码最好保存一下,我们接下来就会使用
验证启动是否成功
直接在本地通过curl命令访问
curl --cacert /DATA/soft/es/elasticsearch-8.6.2/config/certs/http_ca.crt -u elastic https://localhost:9200
执行后输入 elastic 账号的密码,返回如下内容
{"name" : "cspl-dev","cluster_name" : "elasticsearch","cluster_uuid" : "iozzv0S0Q6mKwgNnfAA8Xw","version" : {"number" : "8.6.2","build_flavor" : "default","build_type" : "tar","build_hash" : "2d58d0f136141f03239816a4e360a8d17b6d8f29","build_date" : "2023-02-13T09:35:20.314882762Z","build_snapshot" : false,"lucene_version" : "9.4.2","minimum_wire_compatibility_version" : "7.17.0","minimum_index_compatibility_version" : "7.0.0"},"tagline" : "You Know, for Search"
}
我们也可以通过浏览器输入账号密码后直接访问
至此,单机安装并启动es就完成了。不过此启动方式是前台运行方式,使用Ctrl + C 即可关闭。
后台运行
./bin/elasticsearch -d -p pid
- -d:表示后台执行
- -p:表示将进程 pid 记录在文件 pid 中(pid文件生成后默认在 $ES_HOME 目录下)
关闭后台运行
pkill -F pid
注:因 pid 文件生成在 $ES_HOME 目录下,所以请在 $ES_HOME 目录下执行该命令
安全证书和密钥编辑
安装 Elasticsearch 时,会在 Elasticsearch 配置目录中生成以下证书和密钥,用于将 Kibana 实例连接到安全的 Elasticsearch 集群并加密节点间通信。
- http_ca.crt
用于为此 Elasticsearch 集群的 HTTP 层签署证书的 CA 证书。客户端连接需要信任此证书。 - http.p12
包含此节点的 HTTP 层的密钥和证书的密钥库。 - transport.p12
包含集群中所有节点的传输层密钥和证书的密钥库。
http.p12并且transport.p12是受密码保护的 PKCS#12 密钥库。可以使用 bin/elasticsearch-keystore 命令,检索或更改密钥库内容
检索 http.p12
bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
检索 transport.p12
bin/elasticsearch-keystore show xpack.security.transport.ssl.keystore.secure_password