ElasticSearch 快速入门

1 ElasticSearch简介

1.1 ElasticSearch(简称ES)

Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便。客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。

官方网站: https://www.elastic.co/
下载地址: https://www.elastic.co/cn/start

创始人:Shay Banon(谢巴农)

在这里插入图片描述

1.2 ElasticSearch与Lucene的关系

Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库(框架),但是想要使用Lucene,必须使用Java来作为开发语言并将其直接集成到你的应用中,并且Lucene的配置及使用非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Lucene缺点:
(1) 只能在Java项目中使用,并且要以jar包的方式直接集成项目中。
(2) 使用非常复杂-创建索引和搜索索引代码繁杂。
(3) 不支持集群环境-索引数据不同步(不支持大型项目)。
(4) 索引数据如果太多就不行,索引库和应用所在同一个服务器,共同占用硬盘.共用空间少。

上述Lucene框架中的缺点,ES全部都能解决。

1.3 ES vs Solr比较

1.3.1 ES vs Solr 检索速度

当单纯的对已有数据进行搜索时,Solr更快。
在这里插入图片描述
当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势。
在这里插入图片描述
大型互联网公司,实际生产环境测试,将搜索引擎从Solr转到 Elasticsearch以后的平均查询速度有了50倍的提升。
在这里插入图片描述

1.3.2 总结

(1) Solr 利用 Zookeeper 进行分布式管理,而Elasticsearch 自身带有分布式协调管理功能。
(2) Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
(3) Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
(4) Solr 是传统搜索应用的有力解决方案,但 Elasticsearch更适用于新兴的实时搜索应用。

1.3.3 ES vs 关系型数据库

在这里插入图片描述

2 Lucene全文检索框架

2.1 什么是全文检索

通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数。用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了。

2.2 分词原理之倒排索引

在这里插入图片描述

3 Elasticsearch中的核心概念

3.1 索引 index

一个索引就是一个拥有几分相似特征的文档的集合。比如说,可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。

3.2 映射 mapping

ElasticSearch中的映射(Mapping)用来定义一个文档mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分词器、是否被索引等等,这些都是映射里面可以设置的。

3.3 字段Field

相当于是数据表的字段、列。

3.4 字段类型 Type

每一个字段都应该有一个对应的类型,例如:Text、Keyword、Byte等

3.5 文档 document

一个文档是一个可被索引的基础信息单元,类似一条记录。文档以JSON(Javascript Object
Notation)格式来表示;

3.6 集群 cluster

一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。

3.7 节点 node

一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点都会被安排加入到一个叫做“elasticsearch”的集群中。这意味着,如果在网络中启动了若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做“elasticsearch”的集群中。

3.8 分片

一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,这些份就叫做分片。当创建一个索引的时候,可以指定你想要的分片的数量,每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。

分片很重要,主要有两方面的原因:
(1)允许水平分割/扩展你的内容容量。
(2)允许在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量。

3.9 副本

在一个网络/云的环境里,失败随时都可能发生,在某个分片/节点不知怎么的就处于离线状态,或者由于任何原因消失了,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch允许你创建分片的一份或多份拷贝,这些拷贝叫做副本分片,或者直接叫副本。

副本之所以重要,有两个主要原因:
(1) 在分片/节点失败的情况下,提供了高可用性。
(2) 扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行。

4 安装ElasticSearch(docker)

4.1 拉取镜像

docker pull elasticsearch:7.4.2    

4.2 创建文件

mkdir -p  /usr/local/elasticsearch/config
mkdir -p  /usr/local/elasticsearch/data
mkdir -p  /usr/local/elasticsearch/plugins

4.3 elasticsearch.yml写入值

echo "http.host: 0.0.0.0">>/usr/local/elasticsearch/config/elasticsearch.yml

4.4 给用户权限

#可读,可写,可执行
chmod -R 777 /usr/local/elasticsearch/

4.5 docker run

#9200对外,9300对内通信
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
-v /usr/local/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2  

4.6 查看

http://192.168.38.80:9200/

在这里插入图片描述

5 安装kibana

5.1 安装镜像

docker pull kibana:7.4.2

5.2 启动

#ELASTICSEARCH_URL自己的ES地址
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.38.80:9200 -p 5601:5601 -d kibana:7.4.2

5.3 访问

http://192.168.38.80:5601/

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

响彻天堂丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值