前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >elasticsearch-基本概念

elasticsearch-基本概念

作者头像
执生
发布2020-11-11 17:28:55
4830
发布2020-11-11 17:28:55
举报
文章被收录于专栏:立权的博客立权的博客

先类比 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的文档,实际过程也是 删除 - 新增

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档