ElasticSearch(超详细解说)[springBoot整合ES并简单实现增删改查]

ElasticSearch简介

ElasticSearch:智能搜索,分布式搜索引擎。

是ELK的一个组成。是一个产品,而且是非常完善的产品,ELK代表的是:E就是ElasticSearch,L就是Logstach,K即使Kibana

E:ElasticSearch 搜索和分析的功能;

L:Logstach 搜索数据的功能,类似于flume(使用方法几乎跟flume一模一样)。是日志收集系统

K:Kibana 数据可视化(分析),可以用图标的方式来去展示,文不如表,表不如图,是可视化平台。

ElasticSearch优点
  1. 分布式的功能
  2. 数据高可用,集群高可用
  3. API更简单
  4. API更高级
  5. 支持的语言很多
  6. 支持PB级别的数据
  7. 完成搜索的功能和分析功能
  8. 基于Luncene,隐藏了Luncene的复杂性,提供简单的API
  9. ElasticSearch性能比HBase高,咱们的竞价引擎最后还是要存到ES中的
搜索引擎原理
  1. 反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。
  2. 搜索引擎原理就是建立反向索引。
  3. ES在Luncene的基础上进行封装,实现了分布式搜索引擎。
  4. ES中的索引、类型和文档的概念比较重要,类似于MySQL中的数据库、表和行。
  5. ES也是Master-slave架构,也实现了数据库的分片和备份。
  6. ES一个典型的应用就是ELK日志分析系统。
ES支持的语言

Cur/java/c#/python/javaScript/hph/perl/ruby

ES的作用
  1. 全文搜索:类似 select * from product where product_name like '%牙膏%'类似百度效果(电商搜索的效果)
  2. 结构化搜索:类似 select * from product where product_id = ‘1’
  3. 数据分析类似 select count (*) from product
ES的核心概念
  • NRT(Near Realtime)近实时

  • cluster集群,ES是一个分布式的系统:ES直接解压不需要配置就可以使用,在hadoop1上解压一个ES,在hadoop2上解压了一个ES,接下来把这两个ES启动起来。他们就构成了一个集群。在ES里面默认有一个配置,clustername 默认值就是ElasticSearch,如果这个值是一样的就属于同一个集群,不一样的值就是不一样的集群。

  • Node节点,就是集群中的一台服务器

  • Index索引(索引库):我们为什么使用ES?因为想把数据存进去,然后再查询出来。我们在使用Mysql或者Oracle的时候,为了区分数据,我们会建立不同的数据库,库下面还有表的。其实ES功能就像一个关系型数据库,在这个数据库我们可以往里面添加数据,查询数据。ES中的索引非传统索引的含义,ES中的索引是存放数据的地方,是ES中的一个概念词汇index类似于我们Mysql里面的一个数据库 create database user; 好比就是一个索引库

  • type类型:类型是用来定义数据结构的在每一个index下面,可以有一个或者多个type,好比数据库里面的一张表。相当于表结构的描述,描述每个字段的类型。

  • document(文档):文档就是最终的数据了,可以认为一个文档就是一条记录。在ES里面最小的数据单元,就好比表里面的一条数据

  • Field字段:好比关系型数据库中列的概念,一个documenr有一个或者多个filed组成。

  • shard(分片):一台服务器,无法存储大量的数据,ES把一个index里面的数据,分为多个shard,分布式的存储在各个服务器上面。

    kafka:为什么支持分布式的功能,因为里面是有topic,支持分区的概念。所以topic A可以存在不同的节点上面。就可以支持海量数据和高并发,提升性能和吞吐量。

    我们为了保证数据的安全,我们引入了replica的概念,跟hdfs里面的概念是一个意思。

    可以保证我们数据的安全。

    在ES集群中,我们一模一样的数据有多份,能正常提供查询和插入的分片我们叫做 primary shard,其余的我们就管他们叫做 replica shard(备份的分片)

    当我们去查询数据的时候,我们数据是有备份的,它会同时发出命令让我们有数据的机器去查询结果,最后谁的查询结果快,我们就要谁的数据(这个不需要我们去控制,它内部就自己控制了)。

在默认情况下,我们创建一个库的时候,默认会帮我们创建5个主分片(primary shrad)和5个副分片(replica shard),所以说正常情况下是有10个分片的。

同一个节点上面,副本和主分片是一定不会在一台机器上面的,就是拥有相同数据的分片,是不会在同一个节点上面的。

所以当你有一个节点的时候,这个分片是不会把副本存在这仅有的一个节点上的,当你新加入了一台节点,ES会自动的给你在新机器上创建一个之前分片的副本。

ElasticSearch客户端
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值