Elasticsearch 简介与安装

简介

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库—​无论是开源还是私有。

但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

倒排索引

比如我们在搜索引擎上搜索某个事物,比如我们搜索 “嬴政”,则会出现跟秦始皇相关的很多信息,这些信息中比如有一条是这样描述:

秦始皇嬴政,中国第一个皇帝。
秦始皇,病死于沙丘。

结构化数据

以上的语句我们如果以结构化的表示,如下:

name:嬴政,job:皇帝,order:第一,alias:秦始皇 ... ...

以上的描述我们可以用数据库进行存储到某个表,比如 t_figure 人物表。可通过某个字段进行查询。结构化的数据存储之前需要进行结构的分析才能存储,但是一旦存储很容易搜索。

非结构化数据

但实际生活当中,我们得到的信息往往就是上面的一句话,而且每段话都不一样,无法按照固定的格式进行结构化的数据展示。也就是说进行结构化的转换很麻烦,所以大部分的信息可以直接将这段话进行存储。非结构化的数据存储方便,但是查找起来比较难。正常的查找方式都是整段话去匹配,搜索导致效率很低。

倒排索引的主要思想是将这段话进行分词,比如我们的这段话进行分词后为:秦始皇/嬴政/中国/第一个/皇帝/病死/沙丘。将这些信息做成倒排索引如下

词条所在文档
秦始皇文档1、文档2
嬴政文档1
中国文档1
第一个文档1
皇帝文档1
病死文档2
沙丘文档2

文档1即为第一句话,文档2即为第二句话。

这样,当我们搜索秦始皇的时候,就返回文档1和文档2的内容。其他词条依此内推。

Elastic 中的索引和文档

以上面的示例为例,词条的每一行都是Elastic中的索引,每个索引可以对应多个文档。我们可以对比我们的结构化数据库的概念来协助理解Elasticsearch的索引和文档的概念。

数据库Elastic描述
索引 index索引类似于表,每个索引就是一张表
文档 doc每个文档就像每行数据
文档中的字段 Field字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)
模式schema映射 MappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD

安装方式

  1. 源码包安装(可到官网下载地址下载linux、mac、windows对应的源码包)- 本文使用该方式安装到 linux
  2. apt 或 yum 在线安装
  3. rpm安装
  4. 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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值