Elasticsearch (ES) 搜索引擎: 简介、简单安装 与 基础概念

原文链接:https://xiets.blog.csdn.net/article/details/132348370

版权声明:原创文章禁止转载

专栏目录:Elasticsearch 专栏(总目录)

1. Elasticsearch 简介

Elasticsearch(简称为 ES)是一个分布式、高扩展、高实时的搜索与数据分析引擎。ES 是建立在 Lucene 基础之上的分布式搜索引擎,并且提供了比 Lucene 更简单、更灵活的使用方式。Lucene 是 Apache 的项目,但它不是一个完整的全文检索引擎,只提供了全文检索引擎所需要的架构。Lucene 使用 Java 语言开发,并且提供了 Java API 接口。ES 基于 Lucene,也是使用 Java 语言开发,但提供了 REST 风格的 HTTP API 接口,用户只需要使用 HTTP 请求的方式就可以完全使用 ES 的所有功能。

2. Elasticsearch 简单安装

ES 相关链接:

ES 支持 Docker 直接安装,参考:Install Elasticsearch with Docker,Docker 镜像:

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.9.0

ES 支持多机集群,对于基础入门而言,只需要使用本地单机简单安装即可。打开 ES 下载链接,下载对应平台的 ES 安装包。

ES 安装包是一个压缩文件,解压后得到下面目录(Windows):

elasticsearch
│── bin             # 存放 ES 启动、配置等脚本命令
│── config          # 存放 ES 配置文件
│── jdk             # ES 内置的 JDK
│── lib             # ES 运行所需要的一些 jar 包
│── logs            # 存放 ES 运行时产生的日志
│── modules         # 存放 ES 已安装的模块
│── plugins         # 存放 ES 已安装的插件
│── LICENSE.txt
│── NOTICE.txt
└── README.asciidoc

ES 安装包自带 JDK,只需要运行 bin 目录下的启动命令即可启动 ES 搜索引擎服务。

bin 目录下有许多命令,运行 bin 目录下的 elasticsearch 命令启动 ES 搜索引擎服务:

elasticsearch$ ./bin/elasticsearch

首次启动 ES 时,在安装目录下会增加一个 data 文件夹,用于存储索引数据文件。默认情况下会启用并配置安全功能。以下安全配置会自动发生:

  • 启用身份验证和授权,并为内置的超级用户 elastic 生成密码。
  • 为传输层和 HTTP 层生成 TLS 的证书和密钥,并使用这些密钥和证书启用和配置 TLS。
  • 为 Kibana 生成注册令牌,有效期为 30 分钟。

elastic 用户的密码 和 Kibana 的注册令牌将输出到终端,例如:

elasticsearch_start.webp

启动和停止ES,参考:Starting ElasticsearchStopping Elasticsearch

运行 ./bin/elasticsearch 命令默认是前台启动,如果要后台运行,可以加上 -d 参数,即:./bin/elasticsearch -d

要重置密码,可以运行 ./bin/elasticsearch-reset-password -u elastic 命令。

首次启动 ES 后,生成的 TLS 证书和密钥保存在 config/certs 目录下:

config/certs
│── http_ca.crt
│── http.p12
└── transport.p12

并且在 config/elasticsearch.yml 配置文件末尾增加相关安全配置:

#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically      
# generated to configure Elasticsearch security features on 21-07-2023 04:26:56
#
# --------------------------------------------------------------------------------

# Enable security features
xpack.security.enabled: true

xpack.security.enrollment.enabled: true

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
cluster.initial_master_nodes: ["xiets.local"]

# Allow HTTP API connections from anywhere
# Connections are encrypted and require user authentication
http.host: 0.0.0.0

# Allow other nodes to join the cluster from anywhere
# Connections are encrypted and mutually authenticated
#transport.host: 0.0.0.0

#----------------------- END SECURITY AUTO CONFIGURATION -------------------------

3. 访问 Elasticsearch 服务器

ES 提供了 REST 风格的 HTTP API 接口访问,ES 服务器成功启动后,默认监听 9200 端口提供 HTTP 服务。

ES 的 REST APIs 参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html

使用浏览器访问 ES 服务器:

ES 默认开启了身份验证和 TLS,所以需要使用 https 访问,浏览器打开 https://localhost:9200,会提示不信任的证书(证书是ES自己生产的,所有浏览器不信任,可以把生成的证书安装到本地),点击“继续”或“信任证书”,然后弹出 Basic Authentication 认证的用户名和密码输入框,输入用户名 elastic,以及 ES 首次启动时终端输出的密码即可访问。

使用 CURL 命令访问 ES 服务器:

# -k 表示不校验 TLS 证书
curl -k "https://elastic:password@localhost:9200"

# 如果要校验 TLS 证书, 可以手动指定信任的证书
curl --cacert config/certs/http_ca.crt "https://elastic:password@localhost:9200" 

访问成功返回下面信息:

{
    "name" : "xiets.local",
    "cluster_name" : "elasticsearch",
    "cluster_uuid" : "upsm2zBASHSQF9eB-Zifwg",
    "version" : {
        "number" : "8.8.2",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "98e1271edf932a480e4262a471281f1ee295ce6b",
        "build_date" : "2023-06-26T05:16:16.196344851Z",
        "build_snapshot" : false,
        "lucene_version" : "9.6.0",
        "minimum_wire_compatibility_version" : "7.17.0",
        "minimum_index_compatibility_version" : "7.0.0"
    },
    "tagline" : "You Know, for Search"
}

对于基础入门学习而言,开启身份认证和TLS非常麻烦,可以先关闭身份证认证和禁用TLS。修改 config/elasticsearch.yml 配置文件中的相关字段,如下所示,把相关字段值改为 false:

# Enable security features
xpack.security.enabled: false

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false

# 没有任何认证, 为了安全考虑, 确保只能本地访问, 
# 可以把 HTTP 监听地址改为 127.0.0.1, 默认为 0.0.0.0 表示所有 IP 都可以访问
http.host: 127.0.0.1

保存修改后的配置,重启 ES 服务器,然后就可以直接通过 HTTP 的方式免认证访问了:

curl http://localhost:9200/

Kibana 客户端自带了一个 Console - Dev Tools 工具,可以使用 DSL 语言很方便地访问 ES,还有 API 命令提示,安装 Kibana 参考:Install Kibana。Kibana 需要依赖 Elasticsearch 才能运行,下载解压 Kibana 后,需要在 kibana>/config/kibana.yml 配置文件中的 elasticsearch.hosts 字段值中修改 Elasticsearch 的访问地址。

4. Elasticsearch 基础概念

ES搜索引擎和传统的关系型数据库一样,都是用来存储和检索数据。在使用ES搜索引擎时,需要先知道一些基本的概念,并且这些概念名称在关系型数据库中都有相对于的概念。

索引

关系型数据库中,数据的增删改查,都是基于表的操作。ES搜索引擎中的索引就相当于关系型数据库中的。在ES中存储数据,首先需要创建索引,然后在索引中增加、搜索、更新数据。

文档

关系型数据库中,在表中存储数据,需要把数据封装为一条(一行)记录,而在ES中对应的就是文档。ES中的文档可以包含一个或多个字段值,每个字段可以有不同的数据类型。文档保存在索引中,一个ES文档相当于关系型数据库表中的一行数据记录。用户对数据操作的最细粒度对象就是文档。

字段

一个文档由一个或多个字段值组成,ES中的字段也相当于关系型数据库中的字段

映射

映射相当于关系型数据库中的表结构。和关系型数据库创建表一样,ES创建索引时需要定义文档的数据结构,这种结构称为映射。在映射中文档的字段类型在定义后就不能更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Elasticsearch是一个基于开源的分布式搜索和分析引擎,主要用于处理大规模数据的实时搜索、分析和存储。它利用了分布式架构的优势,可以快速地搜索和处理海量数据。 Elasticsearch具有高度的可伸缩性,可以水平扩展以适应不断增长的数据量。它使用了分片和复制机制,将索引数据划分为多个分片,并在集群中的多个节点上进行复制,从而实现了数据的分布式存储和冗余备份。 对于搜索功能,Elasticsearch采用了倒排索引的概念,它通过建立字典来映射每个词项到包含该词项的文档,以实现快速的全文搜索。同时,它还支持各种查询类型和过滤器,可以根据不同的需求进行高级搜索和过滤。 此外,Elasticsearch还提供了灵活的数据分析功能,可以进行聚合、统计和数据可视化等操作。它内置了强大的聚合框架,可以对数据进行复杂的分组、求和、平均等操作,以便更好地理解和分析数据。 另外,Elasticsearch还支持实时索引和搜索,可以实时地从更新的数据中搜索和获取结果。它采用了近乎实时的索引策略,可以保证数据的低延迟和高吞吐量。 总结来说,Elasticsearch作为一款分布式搜索和分析引擎,具有高可伸缩性、快速的搜索和分析能力,可以帮助用户高效地处理大规模数据,并从中获取有用的信息和洞察。它广泛应用于各个领域,如企业搜索、日志分析、数据挖掘等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢TS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值