es:简介

56 阅读4分钟

参考网址

blog.csdn.net/m0_54861649…

blog.csdn.net/Sword52888/…

es简介

es,elasticsearch,是一个基于lucene的搜索服务器。
从字面上看,有search,是搜索服务器。
它提供了一个分布式多用户能力的全文搜索引擎。

适用的场景

为用户提供按照关键字查询的全文搜索功能。
实现海量数据的处理分析的解决方案。

es数据库和其他数据库的比较

图片.png

es的特点

<1>天然分片(share),天然集群

es把数据分成多个share, 多个share可以组成一份完整的数据,这些share可以分布在集群中的各个机器节点中。
随着数据的不断增加,集群可以增加多个分片,把多个分片放在多个机器上,目的是达到负载均衡,横向扩展。
在实际的运算过程中,每个查询任务提交到某个机器节点上,该节点必须负责把数据整理汇聚,再返回给客户端。
也就是一个简单的节点进行map的计算,在一个固定的节点上进行reduce得到最终的结果返回给客户端。

<2>天然索引(index)

es中的所有的数据都是默认进行索引的,这点和mysql正好相反,mysql是默认不加索引,要加索引的时候必须特别说明,而es是只有不加索引才需要说明.

es是什么

es是一个分布式的实时文档存储,每个字段都可以被索引和搜索。
es是一个分布式实时搜索引擎。
可以扩展上百个服务节点node的扩展,并且支持pb级别的结构化或者非结构化的数据。
提供简单的api接口
ES是一个可高度扩展的全文搜索和分析引擎。它能够快速地、近乎实时地存储、查询和分析大量数据。

es的基本结构

图片.png

上图,假如在1个主share和1个副本的配置下,主和replication会分布在不同的node节点上,起到容灾的作用。
replication只负责复制主primary给下来的数据,只有当primary挂了,它才上位。

es的基本概念

<1>集群(cluster)
    ES集群由若干节点node组成,这些节点在同一个网络内,cluster-name相同.
    就像一个家庭内,有很多人一样。每个人都是节点,所属的集群名都是这个家庭。

<2>节点(node)
    一个ES的实例,本质上是一个java进程,生产环境一般建议一台机器上运行一个ES实例。
    节点可以分布在不同的机房。

<3>节点有如下分类:
1、master节点:集群中的一个节点会被选为master节点,它将负责管理集群范畴的变更,例如创建或删除索引,添加节点到集群或从集群删除节点。
   master节点无需参与文档层面的变更和搜索,这意味着仅有一个master节点并不会因流量增长而成为瓶颈。任意一个节点都可以成为 master 节点。

2data节点:持有数据和倒排索引。
   默认情况下,每个节点都可以通过设定配置文件中的node.data属性为true(默认)成为数据节点。
   如果需要一个专门的主节点,应将其node.data属性设置为false。

<4>索引(index)
  文档的容器,一类文档的集合,其实就相当于一张表table

<5>分片(shard)
单个节点由于物理机硬件限制,存储的文档是有限的,如果一个索引包含海量文档,则不能在单个节点存储。ES提供分片机制,同一个索引可以存储在不同分片(数据容器)中,这些分片又可以存储在集群中不同节点上。

分片分为主分片(primary shard) 以及从分片(replica shard) 

1、主分片与从分片关系:从分片只是主分片的一个副本,它用于提供数据的冗余副本 

2、从分片应用:在硬件故障时提供数据保护,同时服务于搜索和检索这种只读请求 

3、是否可变:索引中的主分片的数量在索引创建后就固定下来了,但是从分片的数量可以随时改变 

<6>文档(document)
可搜索的最小单元 ,json格式保存.
可以理解为表中的一行数据。

es和关系型数据库概念的对比

分片(Shard)在数据库概念映射里面类似于分表(水平拆分)

图片.png

从上图可以看出来。
index索引就是table
document就是表中的行数据
field就是json字符串中的key


有不同的说法

图片.png