Elasticsearch --- (一)简介

目录

一、什么是全文检索和Lucene?

1、全文检索:倒排索引

2、Lucene:

二、Elasticsearch

1、ES功能

2、ES特点

三、ES核心概念

1、Near Realtime(NRT)近实时

2、Cluster 集群

3、Node 节点

4、Document 文档  & field

5、index 索引

6、type 类型

7、shard

8、replica

9、es核心概念 & 数据库核心概念


Elasticsearch,分布式、高性能、高可用、可伸缩的搜索和分析系统

一、什么是全文检索和Lucene?

1、全文检索:倒排索引

                      

2、Lucene:

        就是一个jar包,里面包含了封装好的各种建立倒排索引以及进行搜索的代码,包括各种算法。我们就用Java开发的时候,引入Lucene jar,然后基于Lucene的api 进行开发即可。用Lucene,我们就可以将已有的数据建立索引,Lucene会在本地磁盘上给我们组织索引的数据结构。另外的话,我们也可以用Lucene提供的一些功能和api 来针对磁盘上的索引数据进行搜索。

 

二、Elasticsearch

1、ES功能

      (1)分布式的搜索引擎和数据分析引擎

               搜索:百度、网站的站内搜索、IT系统的检索

               数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是那些

      (2)全文检索,结构化检索,数据分析,(部分匹配,自动完成,搜索纠错,搜索推荐)

               全文检索:搜索商品名称包含牙膏的商品,select * from products where product_name like ‘%牙膏%’

               结构化检索:搜索商品分类为日化用品的商品都有那些,select * from products where category_id = '日化用品'

               数据分析:分析每个商品分类下有多少个商品,select category_id,count(*)  from products group by category_id

      (3)对海量数据进行近实时的处理

               分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索

               海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了

               近实时:检索个数据要花费1个小时(这就不叫近实时,叫离线批处理,batch-processing),在秒级别对数据进行搜索和分析

              跟分布式/海量数据相反的:Lucene,单机应用,只能在单台服务器上使用,最多只能处理单台服务器可以处理的数据量

2、ES特点

    (1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司,也可以运行在单机上,服务小公司

    (2)ES不是新技术,主要是将全文检索、数据分析以及分布式技术,合并在一起,才形成了独一无二的ES;

    (3)对用户而言,开箱即用,简单,作为中小型应用,直接3分钟部署一下ES,就可作为生产环境的系统来使用了,数据量不大,操作不太复杂

    (4)数据库的功能面对很多领域是不够用的,特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;ES作为传统数据库的一个补充,提供了数据库所不能提供的很多功能

 

三、ES核心概念

1、Near Realtime(NRT)近实时

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

2、Cluster 集群

      包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常

3、Node 节点

     集群中的一个节点,节点也有一个名称(默认随机分配),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么他们会组成一个elasticsearch集群,当然一个节点也可组成一个elasticsearch集群

4、Document 文档  & field

      es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以存储多个document。一个document里面有多个field,每个field就是一个数据字段

    product document

    {

        “product_id”:“1”,

        “product_name”:"高露洁牙膏”,

        “category_id”:“2”,

        “category_name”:“日化用品”,

   }

5、index 索引

     包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引。索引有一个名称,一个index包含很多document,一个index就代表了一类类似的或者相同的document,比如建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。

6、type 类型

     每个索引里可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field。比如博客系统,有一个index,可以定义用户数据type,博客数据type,评论数据type。

7、shard

      单台机器无法存储大量数据,es可将一个索引中的数据切分为多个shard,分布在多台服务服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和操作分布到多台服务器上去执行,提升吞吐量和性能,每个shard都是一个Lucene index

8、replica

      任何一个服务器随时可能故障或宕机,此时shard可能会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障是提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引是一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个)。默认每个index10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器

9、es核心概念 & 数据库核心概念

      document        ------          行

      type                 ------          表

      index               ------          库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值