ElasticSearch | 介绍

1. 前言

只供参考
为什么使用ElasticSearch?
现在是在市场上应用最广泛 最热门 全文搜索引擎有 ElasticSearch 、 Solr 这两种
ElasticSearch 、 Solr 现在社区都很活跃;
以下表格看下两个搜索引擎的区别于优势

Solr ElasticSearch
诞生时间 2004 2010
底层 采用Java开发 基于Lucene 采用Java开发,基于Lucene
实时建立索引 Solr 会产生IO 阻塞,效率低 不阻塞,效率高
实时添加数据 检索效率变低 检索效率变化不大
分布式管理 利用zookeeper进行分布式管理 自身带有分布式管理,天生分布式
部署 需要部署到web容器上 如tomcat 自身携带运行功能
支持索引方式 HTML、PDF、JSON、XML、CSV等等 仅支持JSON
社区 Apache 社区 Elasticsearch和其他软件的公司
使用难度 复杂,部署复杂需要使用zookeeper 来自做到分布式 简单、易于使用、上手快, 快速部署
专注方向 文本搜索 搜索 +数据分析

2. 简介

ElasticSearch 是一个建立在Lucene基础上的搜索引擎.
ElasticSearch 是一个实时分布式和开源的全文搜索和分析引擎.
ElasticSearch 是面向文档的,ElasticSearch 不仅仅存储文档而且索引每个文档的内容,使之可以被检索。
ElasticSearch 使用JSON 作为文档的序列化格式,JSON 更简单、简洁和容易阅读。

MySQL 使用B+Tree 的索引结构提升数据检索速度,而ElasticSearch 使用 倒排索引 的结构来达到相同的目的。

3. 优势

  • 天生分布式 集群扩容无缝整合新节点
  • 索引拆分多个分片 ,每个片可能有0-多个副本
  • 集群可扩展上百台服务器, 处理PB级别的结构化/非结构化的数据
  • 支持插件机制.分词插件、同步插件、可视化插件等
  • 比solr 更加轻量级

4. 核心概念

4.1 逻辑层面

  • (1) 索引 index

ElasticSearch 中 索引 Index 类似于 mysql中的数据库,主要存储用户文档数据.

  • (2) 类型type

ElasticSearch 中 type类型 是 类似于mysql 中的表 ,每个文档都属于一种type类型,如果没有定义 会有默认值, 每个Index索引包含很多type类型。

注意: 同一索引下,不同type的数据存储其他type的field 大量空值,造成资源浪费。
所以,不同类型数据,要放到不同的索引中。
ElasticSearch9中,将会彻底删除type。

  • (3) 文档Document

ElasticSearch 中 Documetn文档是实际的数据主体, 相当于Mysql表中的一条数据, ES的所有操作都是建立在文档上的,每个文档有各种Filed组成,文档可以理解为一个JSON 对象

  • (4) 字段Filed

每个文档中包含多个Filed 类似于Mysql 表中的列表, 每个字段的所有数据都是默认被索引的,专门设置了倒排索引

  • (5)映射Mapping

映射 用户定义Filed的属性 ,如字段类型 是否分词等.

4.2 物理层面

  • (1)集群Cluster

ElasticSearch 集群, ElasticSearch天生是分布式,天生支持集群部署.

  • (2)节点Node

在集群中 多个节点服务组成一个集群 , 就是一个ES 实例就是一个节点

  • (3)分片Shard

分片是数据的容器, 文档被保存在分片中,分片是分配到集群内的各个节点里的, 当集群规模扩大或者缩小时,ElasticSearch 会自动的在各个节点中迁移分片,使数据均匀的分布在集群里. 创建索引的时候可以指定分片数量,默认是5个.

分片 Shard因为ES是分布式架构,类似于HDFS的存储方式,所以数据被打散存储在集群的多个节点上,一个分片实际上就是底层Lucene的一个索引,这里说的分片指的是ES中的主分片(因为还有副本分片一说),分片的方式是ES自动完成,用户可以指定分片的数量,主分片一旦指定就不能修改,因为ES打散数据的方式是和索引创建时指定的主分片数量有关(参考公式:shard = hash(routting) % number_of_primary_shards进行文档分配),后期改变会导致分片中的数据不可搜索。
一个分片是一个底层的工作单元,它只是保存了全部数据的一部分

  • (4)副本Replia

副本就是分片的一个拷贝,作为故障时保护数据不丢失的备份数据.
另外,请求量很大的情况下,副本可以分担主Shard压力,承担查询功能。副本个数还以在创建完索引后灵活调整

这里需要知道集群环境下拥有越多的副本分片,也将拥有越高的吞吐量.

5. ElasticSearch安装 (linux环境)

安装教程地址:
https://blog.csdn.net/qq825478739/category_11825929.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容