Article

ElasticSearch(一)ElasticSearch入门

ElasticSearch(一)ElasticSearch入门

你能 get 到的知识点?

  1. ES 简介以及同类产品对比
  2. ES 的基础概念
  3. ES head 的安装
  4. ES 的单节点安装与集群式安装

本文首发于 CSDN,作者:lomtom

原文链接:https://blog.csdn.net/qq_41929184/article/details/116799994 🔗

个人网站:https://lomtom.top 🔗,个人公众号:博思奥园,同步更新。

你的支持就是我最大的动力。

ES 系列:

  1. ElasticSearch(一) ElasticSearch 入门
  2. ElasticSearch(二)在 ElasticSearch 中使用中文分词器
  3. ElasticSearch(三)ElasticSearch 索引操作
  4. ElasticSearch(四)ElasticSearch 文档操作
  5. ElasticSearch(五)ElasticSearch 字段类型

一、概述

什么是 ElasticSearch?

ElasticSearch:高可用分布式搜索引擎(一般简称为 ES),可用于实时存储、检索数据,使用 Restful API 隐藏Lucene的复杂性,可以让全文搜索变得简单

  1. 功能及特点:

    1. 分布式的搜索引擎与数据分析(可拓展到上百台服务器)
    2. 全文检索、结构化检索(检索是使用倒排来实现的)
    3. 对海量数据进行实时处理(支持 PB 级别数据)
  2. 使用场景: 可用于大数据、数据清洗等等

  3. 目前使用:

    1. 维基百科:类似国内的百度百科,全文检索、高亮、搜索推荐
    2. Github:开源代码管理网站
    3. 电商网站
    4. 日志数据分析:logstash 采集日志、ES 进行复杂的数据分析,常常使用 ELK 或 EFK 来进行日志采集分析。
    5. 等等。。。
  4. 背景: 一个码农失业,给老婆写了一个菜谱的简单搜索引擎,找到工作后,将初版本的搜索引擎进一步迭代,就有了最开始的 ElasticSearch。

同类对比:ES vs Solr

  1. es 基本是开箱即用(解压就可以用) ,非常简单,Solr 安装略微复杂- 丟丢!
  2. Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
  3. Solr 支持更多格式的数据,比如 SON. XML、 CSV ,而 Elasticsearch 仅支持 json 文件格式。
  4. Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能。高级功能多有第三方插件提供,例如图形化界面需要 kibana 友好支撑
  5. Solr 查询快,但更新索引时慢(因为可能会导致 IO 阻塞)
    • ES 建立索引快, 即实时性查询快,用于 facebook 新浪等搜索。
    • Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
    • 插入数据时,Solr 会有明显的搜索效率的降低,而 ES 不会。
  6. Solr 比较成熟,有一一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch 相对开发维护者较少,更新太快,学习使用 成本较高。
  7. ES 在未来成为趋势

二、入门

ES 基本概念

(1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概 1 秒);基于 es 执行搜索和分析可以达到秒级

(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是 elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常 (3)Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个 elasticsearch 集群,当然一个节点也可以组成一个 elasticsearch 集群

(4)Index:索引,包含一堆有相似结构的文档数据,类似于数据库中的一个表,例如一个用户表。 (5)Type:类型,每个索引里都可以有一个或多个 type,type 是 index 中的一个逻辑数据分类,一个 type 下的 document。在 7.X 版本被弃用,使用_doc 代替。

​ 在 7.X 前把 index 比作数据库名,把 type 比作表名更加合适,但是在 7.X 后,type 被 ES 弃用,所以将 index 比作表,而 type 就没有啥实际意义,只是迭代的遗留产物,官方在后续版本将彻底弃用 type。

(6)Document:文档,es 中的最小数据单元,类似于数据库中表的一行数据。例如用户表中的某一行数据。

(7)shard:单台机器无法存储大量数据,es 可以将一个索引中的数据切分为多个 shard,分布在多台服务器上存储。有了 shard 就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个 shard 都是一个 lucene index。 (8)replica:任何一个服务器随时可能故障或宕机,此时 shard 可能就会丢失,因此可以为每个 shard 创建多个 replica 副本。replica 可以在 shard 故障时提供备用服务,保证数据不丢失,多个 replica 还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认 5 个),replica shard(随时修改数量,默认 1 个),默认每个索引 10 个 shard,5 个 primary shard,5 个 replica shard,最小的高可用配置,是 2 台服务器。

  1. 集群名:在config/elasticsearch.yml中配置,如果需要配置集群,所有的节点名字的集群名字必须一致
cluster.name: "ES-lomtom"`
  1. 如何查看节点状态:
GET /_cluster/health

在一个不包含任何索引的空集群中,它将会有一个类似于如下所示的返回内容:

{
   "cluster_name":          "elasticsearch",
   "status":                "green",
   "timed_out":             false,
   "number_of_nodes":       1,
   "number_of_data_nodes":  1,
   "active_primary_shards": 0,
   "active_shards":         0,
   "relocating_shards":     0,
   "initializing_shards":   0,
   "unassigned_shards":     0
}

status 字段是我们最关心的。

status 字段指示着当前集群在总体上是否工作正常。它的三种颜色含义如下:

— 绿色(green):健康状态,所有的主分片和副本分片都正常运行。 — 黄色(yellow):警告状态,所有的主分片都正常运行,但不是所有的副本分片都正常运行。 — 红色(red):错误状态,有主分片没能正常运行。

三、安装

以前我有一篇文章专门介绍怎么使用 docker 去安装 ES,感兴趣的看一下:传送门 🔗

1 ElasticSearch Head

ElasticSearch Head 可用于 ES 的可视化。

安装:

我们通常可以通过两种方法来使用他:

  1. 浏览器插件:谷歌应用商店:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm/related?utm_source=chrome-ntp-icon 🔗

  2. ES head 的源码:https://github.com/mobz/elasticsearch-head/releases 🔗

    ​ 简单的几部就可以使用 ES head:(前提是有 node 环境,并且安装 npm)

    • git clone git://github.com/mobz/elasticsearch-head.git
    • cd elasticsearch-head
    • npm install
    • npm run start
    • open http://localhost:9100/ 🔗

2 单节点安装

1、docker 安装:见我另一篇文章 🔗https://blog.csdn.net/qq_41929184/article/details/105033771 🔗 2、压缩包安装:Elasticsearch 官网:https://www.elastic.co/cn/elasticsearch/ 🔗

Support Matrix: https://www.elastic.co/cn/support/matrix 🔗

启动: 1、直接下载:进入到 bin 目录下,直接执行 elasticsearch 启动即可。 2、docker 下载:启动容器即可启动 ElasticSearch

验证: 进入http://localhost:9200/ 🔗,出现如下信息即为成功,

{
  "name": "0f061808e3b2",
  "cluster_name": "docker-cluster",
  "cluster_uuid": "hSWrz40ASFqFjLrRGvmAoA",
  "version": {
    "number": "7.5.2",
    "build_flavor": "default",
    "build_type": "docker",
    "build_hash": "8bec50e1e0ad29dad5653712cf3bb580cd1afcdf",
    "build_date": "2020-01-15T12:11:52.313576Z",
    "build_snapshot": false,
    "lucene_version": "8.3.0",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
  },
  "tagline": "You Know, for Search"
}

ES 的目录以及含义:

目录含义
modules依赖模块目录
lib第三方依赖库
logs输出日志目录
plugins插件目录
bin可执行文件目录
config配置文件目录
data数据存储目录

3 分布式(集群)安装

  • 一主二从
  • master 的端口是 9200,slave 端口分别是 9201 和 9202

1、如果是 docker 安装,只需要注意端口映射,以及配置的 ip 即可,

1、master
docker run -d --name elaseticsearch -p 9200:9200 -p 9300:9300 -e ES_JAVA_POTS="-Xms256m -Xmx256m"  -e "discovery.type=single-node"  [镜像id]

2、salve1
docker run -d --name elaseticsearch -p 9200:9200 -p 9300:9300 -e ES_JAVA_POTS="-Xms256m -Xmx256m"  -e "discovery.type=single-node"  [镜像id]

3、slave2
docker run -d --name elaseticsearch -p 9200:9200 -p 9300:9300 -e ES_JAVA_POTS="-Xms256m -Xmx256m"  -e "discovery.type=single-node"  [镜像id]

2、如果是压缩包,解压后修改相应的config/elasticsearch.yml即可

1、master
cluster.name: "ES-lomtom"
node.name: "master"
http.cors.enabled: true
http.cors.allow-origin: "*"

node.master: true
network.host: localhost

2、slave1
cluster.name: "ES-lomtom"
node.name: "slave1"
http.cors.enabled: true
http.cors.allow-origin: "*"

network.host: localhost
http.port: 9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

3、slave2
cluster.name: "ES-lomtom"
node.name: "slave2"
http.cors.enabled: true
http.cors.allow-origin: "*"

network.host: localhost
http.port: 9202
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

然后启动三台机器,使用 head 插件进行查看

4 可视化工具 kibana

常常我们需要一个图表式的可视化,kibana 就是一个不错的选择。

1、docker 安装:见我另一篇文章 🔗 2、压缩包安装:https://www.elastic.co/cn/downloads/kibana 🔗

四、你可能会遇到的问题:

1、出现黄色警告

黄色(yellow)的详细解释 🔗

2、ES 跨域问题:

可能会遇到的问题:在安装 ES head 和 ES 后,打开插件或者 head 地址,如果未出现相关节点信息可能是因为未配置跨域

打开 config/elasticsearch.yml 文件

http.cors.enabled: true
http.cors.allow-origin: "*"

启动:

Copyright

本文为原创内容,欢迎分享与引用,请保留作者与原文链接。

文章标题

ElasticSearch(一)ElasticSearch入门

作者

lomtom

发布方式

原创发布

原文链接 https://lomtom.cn/51622