目录
笔记记录 B站狂神说Java的ElasticSearch课程:https://www.bilibili.com/video/BV17a4y1x7zq.
一、ElasticSearch是什么?
Elaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。
Elaticsearch也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
1.1Lucene和ElasticSearch的关系?
Lucene是一个apache软件基金会旗下的全文检索引擎的架构,提供了完整的查询引擎和检索引擎。
ElasticSearch是基于Lucene 做了一下封装和增强。
1.2Elasticsearch和Solr的区别?
| Elasticsearch | Solr | |
|---|---|---|
| 安装方式 | 开箱即用 | 复杂 |
| 底层管理 | 自身带有分布式协调管理功能 | Zookeeper进行分布式管理 |
| 支持格式 | json | JSON、XML、 CSV |
| 支持功能 | 重于核心功能,提供插件 | 提供的功能更多 |
| 查询效率 | 建立索引快(即实时性查询快) | 查询快,但更新索引时慢(即插入删除慢) |
| 学习成本 | 开发维护者较少,更新快,学习使用成本高。 | 有更大、更成熟的用户、开发和贡献者社区 |
(1)当单纯的对已有数据进行搜索时,Solr更快;
(2)当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势
二、ElasticSearch核心概念
ElasticSearch是面向文档,关系型数据库和ElasticSearch客观对比
| DB | ElasticSearch |
|---|---|
| 数据库(database) | 索引(indices) |
| 表(tables) | types <慢慢会被弃用!> |
| 行(rows) | documents |
| 字段(columns) | fields |
ElasticSearch(集群)中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行),每个文档中又包含多个字段(列)
2.1物理设计:
elasticsearch在后台把每个索引划分成多个分片,每分分片可以在集群中的不同服务器间迁移
一个人就是一个集群! ,即启动的ElasticSearch服务,默认就是一个集群,且默认集群名为elasticsearch

2.2物理设计:节点和分片 如何工作
1、创建新索引

一个集群至少有一个节点,而一个节点就是一个elasticsearch进程,节点可以有多个索引默认的,如果你创建索引,那么索引就会有5个分片,每一个主分片会有一个副本。

上图是一个有3个节点的集群,可以看到主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂掉了,数据也不至于丢失;
一个分片是一个Lucene索引(一个ElasticSearch索引包含多个Lucene索引),一个包含倒排索引的文件目录,倒排索引的结构使得elasticsearch在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。
2.3倒排索引(Lucene索引底层)
按(文章关键字)形式建立索引,根据关键字就可直接查询对应的文档(含关键字),无需查询每一个文档
例如:现在有两个文档个,包含内容如下:
Study every day,good good up to forever #文档1包含的内容
To forever ,study every day ,good good up #文档2包含的内容
| term | doc_1 | doc_2 |
|---|---|---|
| Study | √ | × |
| every | × | × |
| day | √ | √ |
| good | × | √ |
| to | √ | √ |
| up | √ | × |
| forever | √ | √ |
| 如果你搜索day up,根据上表发现doc_1的权重高 |
ElasticSearch入门学习笔记(二)软件安装篇
ElasticSearch入门学习笔记(三)SpringBoot整合篇
SpringBoot集成BBOSS-ElasticSearch实现ElasticSearch客户端
阿里云Docker安装ES\ES_Head\安装部署logstash导mysql数据入ElasticSearch

Elasticsearch是一款高扩展性的分布式全文检索引擎,能够实时存储和检索数据,支持PB级别的大数据处理。它使用Java开发,并以Lucene为核心提供简单易用的RESTful API。本文介绍Elasticsearch与Lucene及Solr的区别,并解析其核心概念,如索引、文档、分片和倒排索引等。
1030





