es学习:基础知识介绍

来源:互联网 发布:淘宝店铺长时间不用 编辑:程序博客网 时间:2024/05/16 10:07

一、概述

Elasticsearch:是一个开源的分布式搜索引擎服务器;有一下特点和功能:

1.      支持分布式存储;

2.      提供全文检索功能;

3.      完成对大数据的自动分片,自动负载索引,并提供RESTFUL WEB页面接口;

4.      是基于Lucene构建的;

二、一些概念的解释

1.      集群:cluster

     1.      代表一个集群,集群中有多个节点(每个节点存储着相同的数据)

     2.      默认cluster的名字为elasticsearch。其中一个节点只能属于一个集群。

     3.      不同的集群是通过名字来区分的。

     4.      elasticsearch-xx文件夹下的data目录下文件夹名字就是cluster的名字。

2.      节点:node

    1.      它是cluster的一部分,用来存储数据,并提供集群的索引和搜索功能。

    2.      node都会有一个名字,启动时默认是随机生成的名字。我们也可以自己制定名称。

   3.      data/elasticsearch下可以发现有nodes文件夹,存在文件夹0,这个文件就是所说的节点;

3.      索引:index

   1.      索引是document的一个集合,名字必须用小写来命名这是ES存储数据的地方,类似于关系数据库的database

   2.      假设建的索引为test,在elasticsearch-xx/data/elasticsearch/0/indices/文件夹下发现有test这个文件夹。

4.类型:type

    1就是对index的更细的一个划分。类似关系数据库的表.

5.文档document

   1.      这个类似关系数据库的一行。这个是被索引的最基本单元

6.字段:Field

    1.      这个类似关系数据库的某一列,这是ES数据存储的最小单位

    7.分片:

       一个分片本身就是一个完整的搜索引擎。文档存储在分片中,而分片则会被分配到集群中节点中,随着集群的扩大和缩小,es会自动地将分片在节点之间进行迁移,以保证集群能保持一种平衡。

      1.如果我们的索引数据量很大,超过硬件存放单个文件的限制,就会影响查询请求的速度。Es引入了分片技术;

       2.将一个完整的index分成若干部分存储在相同不同节点上。

       3.每个分片都有自己搜索,更新,删除等和index一样全部功能的一小块。

       4.好处:水平分割和扩展我们存放的内容索引;分发和并行跨碎片操作提高性能/吞吐量;

      5.假设索引为firsttime,在elasticsearch-xx/data/elasticsearch/0/indices/firsttime下有5个分片,从0-4

    个人理解:index可以理解成数据库,假设数据库名字称为test,里面的表t1存放10条数据,那么分给AB,C3个不同的分片,A分片存存test数据库,存储t1表中的前3条数据;B分片存存test数据库,存储t1表中的中间4条数据;C分片存存test数据库,存储t1表有中的后3条数据;每个分片存储索引的结构都一样,存储数据不一样。

7. 副本:replica

  1.冗余备份,防止数据丢失;

  2.负载均衡

一个索引中含有主分片的数量,默认值为5,在索引创建后这个值是不能被更改的

每一个主分片关联的副本分片的数量,默认值为1,这个设置在任何时候都可以修改

对副本分片数量的修改:

   假设主分片为4,副本分片为2,则就有12条分片,其中4条主分片,8条副分片;

三、es的数据类型

3.1  何谓mapping

Mapping,就是对索引库中索引的字段名及其数据类型进行定义。

3.2  数据类型

1.      string

2.      numberbyte intlong float double

3.      Boolean

4.      Date

5.      Binary

3.3  公共属性

1.index:定义字段的检索方式和分析类型

默认值analyzed进行分词,编入索引以供搜索;

        no:则无法通过检索查询到该字段

        not_analyzed:不进行分词(整个字段存储为关键词),编入索引以供搜索;

2.store:

默认值no,不存储,从_source字段取出;

true:独立存储。

ES中原始的文本会存储在_source里面(除非你关闭了它)。默认情况下其他提取出来的字段都不是独立存储的,是从_source里面提取出来的。当然你也可以独立的存储某个字段,只要设置store:true即可

独立存储某个字段,在频繁使用某个特殊字段时很常用。而且获取独立存储的字段要比从_source中解析快得多,而且额外你还需要从_source中解析出来这个字段,尤其是_source特别大的时候。

不过需要注意的是,独立存储的字段越多,那么索引就越大;索引越大,索引和检索的过程就会越慢....

 

 

 

 

 

 

0 0
原创粉丝点击