ElasticSearch 概念和原理初探

是什么

Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎
Luncene是最全面、先进和性能最好的搜索引擎库

特点

When a document is stored, it is indexed and fully searchable in near real-time--within 1 second
当文件存储后,就会生成索引并且可以再1秒之内被索引,接近实时处理了。

Elasticsearch uses a data structure called an inverted index that supports very fast full-text searches
ES使用了叫做倒置索引一种结构,这可以支持非常快的全文搜索。

each document is a collection of fields, which are the key-value pairs that contain your data
每个文档是Fields的集合,Field是一种key value对,里面包含了我们的数据。

做什么

除了搜索引擎,它还是:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 实时分析的分布式搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

怎么用

RESTful API
各种语言的客户端
命令行

ES和普通数据库的类比

image.png

其中 【Type】 类型在新版本(7+版本)中被取消,因为这个会导致多个TYPE中出现的同一个关键字重复做索引,降低效率

  • 普通数据库有SQL,ES有DSL
  • 普通数据库的SELECT和UPDATE操作,ES中有GET方法和PUT方法调用REST对应实现

查询方式参考

image.png

检索类型

image.png

目录结构

目录 配置文件 描述
bin 放置脚本文件,如启动脚本 elasticsearch, 插件安装脚本等
config elasticserch.yml elasticsearch 配置文件,如集群配置、jvm 配置等
jdk java 运行环境
data path.data 数据持久化文件
lib 依赖的相关类库
logs path.log 日志文件
modules 包含的所有 ES 模块
plugins 包含的所有已安装的插件
repo Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here. 共享文件系统存储库位置。 可以容纳多个位置。 文件系统存储库可以放置在此处指定的任何目录的任何子目录中。

理解 文档、类型、索引

索引(Index)

索引(Index)类似于MySQL中的database
作为使用者不用关系索引的底层物理存储方式,作为集群管理者还是要注意的,
索引在集群中会进行分片,比如下图,一个索引在集群中被分配为3个分片。
然后每个分片都有一个副本。


image.png

一个索引中有多个类型(type),相当于MySQL中database下面的table,然后每个table中有多条record,可以认为每条记录对应ES中的一个文档(document)


image.png

类型

类似于Mysql中表的概念,一般来说类型表是的是对同一种结构的定义。但是,实际上ES是弱类型的一种查询引擎。在ES 7系列版本中,已经放弃了type,也就是类型的定义。因为这种类型定义影响了效率。
默认的只有一个类型,名字为_doc

文档

文档类似mysql表中的行,在ES中文档是无模式的,也就是说,可以是一个json类型,或者是一个普通的文本类型。

节点和分片

一般情况下,一个index在集群中创建后可能会有5个分片,然后每个分片有一个副本。总共加在一起是十个分片。
然后一个分片中包含的信息如下图:

[图片上传失败...(image-e733d0-1632566094182)]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容