zoukankan      html  css  js  c++  java
  • elasticsearch-基本概念

    先类比 elasticsearch 和 关系型数据库对应的某些概念,了解ES的结构:

    索引:简单理解成数据库

    分片:一个索引由多个分片组成,应用程序向ES请求的时候,是向索引请求,但是实际上工作的是分片,每个分片都是一个Lucene(搜索引擎),需要占用一定的内                存,CPU,磁盘等物理资源,他是一个最小工作单位,是实际能跑的一个程序。

      主分片:主分片比起副分片,多出的功能只是提供写入文档(索引文档,在ES的官方文档中,经常会同义"索引"和"写入")

      副分片:类似HDFS中的Replica,或者更像是数据库主从复制中的 从数据库,只提供读功能

      如果一个ES集群只有一个主分片,那么整个索引的所有数据都在这个主分片里,无论有多少个副分片,和只有一个主数据库同理。

      如果一个ES集群有两个主分片,无论多少个副分片,那么整个索引的数据分布在这两个主分片里,类似与关系型数据库分库,横切数据库表

      N个主分片,以此类推。

    类型:分片的数据的组成部分,每个部分代表一类事务。

    文档:相当于关系型数据库中的一行记录,ES的实质是 分布式文档存储系统

     id:类似与关系型数据库中行记录的主键

    域:相当于字段

       

    elasticsearch 存在两种获得文档的方式:

      1.根据域(字段)搜索

      2.ID直达

    两种获取方式的速度都挺快,因为elasticsearch对同一条文档(记录)存储了两种数据结构

    正排索引和倒排索引

    省略掉偏移量之类的属性,我们只看简单的查找过程

    下图第一个是正排索引,可以简单理解成我们存储进去的内容,并且每条文档有唯一的标识(id)确认

     映射其实就是对类似关系型数据库的表的类型进行域(字段)定义,比如 age 是 integer......

     映射还可以指明一个域是否可以被解析,如果可以的话,可以在映射指定相应的解析器

    第二个是倒排索引,在存入文档的时候,都需要将存入的文档(一条记录)中需要分析(analyse)的域进行分析器分析

    比如 I love your sister,一般使用英语分析器分词,分词后分出的单元叫做 term,比如这句话会被分为 I , love , your , sister 这四个term。

    当然,有一些分析器有去除无用词功能,比如 the , a 这些无太大意义的词会被去除。

    对于可分析的域,查询的值也要通过相同的分析器进行分析,然后进行检索,比如查询 love your,那么 也会按照上面同样的解析器解析查询的值,解析成 your ,sister 两个term然后再用倒排索引检索

    查询这种可解析的域 叫做 全文域查询

    如果一个域是不可分析的,那么查询的值本身就是一个term,这种查询叫做 精确值查询

    文档中的字段,无论是否可解析,都会被建立倒排索引,所以把一条记录写入到ES中,“写入”被称为“索引”

    面向对象表示和处理了真实世界中潜在的各种复杂数据结构,ES的每条文档都代表一个对象,当然,对象中可以嵌套对象,文档指的是嵌套结构中最顶层的对象

    全文域可以理解成,我们需要做的是去这整个全文里去查找是否包含我们的查询值,比如某篇文章里面找地址

    分出 term 后,会根据 term 构建 倒排索引,比如下面的 term : “南山”,会记住相关的文档的唯一标识

    当然存储方式不一定如下图,因为这样的话要线下时间去遍历出文档的唯一索引,一种假设的方法是当相关文档数太多的时候,可以使用查找树结构或B+数结构

    ES使用简单的 Resful 风格的 API ,索引+类型+id可以唯一标识一个文档(一条记录),使用不同的请求方法可以 进行不同操作,比如删除,新增,修改

    GET or POST or PUT...  /索引名/类型名/id

    需要注意的是 ES 是不支持修改的,名义上是修改,但实际上是 将原本的内容 读出 转换成 JSON ,然后修改 ,修改后写会索引,同时删除旧文档。

    ES可以全量替换掉某个id的文档,实际过程也是 删除 - 新增

  • 相关阅读:
    OPPO R9sPlus MIFlash线刷TWRP Recovery ROOT详细教程
    OPPO R11 R11plus系列 解锁BootLoader ROOT Xposed 你的手机你做主
    努比亚(nubia) M2青春版 NX573J 解锁BootLoader 并进入临时recovery ROOT
    华为 荣耀 等手机解锁BootLoader
    青橙 M4 解锁BootLoader 并刷入recovery ROOT
    程序员修炼之道阅读笔03
    冲刺8
    典型用户模板分析
    学习进度八
    冲刺7
  • 原文地址:https://www.cnblogs.com/lqlqlq/p/13955892.html
Copyright © 2011-2022 走看看