ElasticSearch学习记录

Posted 风过无痕521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch学习记录相关的知识,希望对你有一定的参考价值。

一、简介

  ElasticSearch是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。

  Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

  设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

二、概念

  1、节点[Node]:单个 Elastic 实例称为一个节点

  2、集群[Cluster]:一组节点构成一个集群

  3、索引[Index]:含有相同属性的文档集合

  4、文档[Document]:可以被索引的基础数据单位

  5、类型[Type]:索引可以定义一个或多个类型,文档必须属于一个类型

  6、分词器[Analyzer]:分词组件

  7、分片[Shard]:每个索引都有多个分片,每个分片都是 Lucene 索引

  8、备份[Replicas]:拷贝一份分片就完成分片的备份

三、集群图例

 

四、底层

  1、倒排索引

  倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。

  由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。

  带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

  2、分片原理

  分片路由算法:hash 取模

shard = hash(routing) % number_of_primary_shards

  routing值是一个任意字符串,它默认是_id但也可以自定义。

  这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数量得到一个余数(remainder),

  余数的范围永远是0到number_of_primary_shards - 1,这个数字就是特定文档所在的分片。

  这也解释了为什么主分片的数量只能在创建索引时定义且不能修改:如果主分片的数量在未来改变了,所有先前的路由值就失效了,文档也就永远找不到了。

  3、集群Master选举

  基于 Bully 算法实现。

  4、脑裂(split brain)

  脑裂问题,就是同一个集群中的不同节点,对于集群的状态,有了不一样的理解。

 

 

 

 

基础资料:

ELK官网:https://www.elastic.co/

ELK官网文档:https://www.elastic.co/guide/index.html

ELK中文手册:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

ELK中文社区:https://elasticsearch.cn/

ELK-API :https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html

 

全文搜索引擎 Elasticsearch 入门教程

Elasticsearch 基础入门

es系列:集群分布式架构及原理

Elasticsearch倒排索引结构

elasticsearch 分片(Shards)的理解

Elasticsearch分片原理

 

Elasticsearch选举原理之Bully算法

Elasticsearch的选举机制

elasticsearch的master选举机制

Elasticsearch脑裂问题详细分析以及解决方案

 

Elasticsearch入门系列~通过Java一系列操作Elasticsearch

Elasticsearch Java API四种实现方式

ElasticSearch大数据分布式弹性搜索引擎使用

 

ELK日志分析平台搭建全过程

ELK 日志监控平台环境搭建及使用说明

 

查询语法

Lucene查询语法详解

ElasticSearch 基本查询语法

Elasticsearch几种查询语法

elasticsearch 基础 —— Query String

elasticsearch-查询基础篇

ElasticSearch入门3: 高级查询

19 个很有用的 ElasticSearch 查询语句 篇一

ElasticSearch常用查询语法

elasticsearch基本操作之--使用QueryBuilders进行查询

Elasticsearch java api 常用查询方法QueryBuilder构造举例

ElasticSearch AggregationBuilders java api常用聚会查询

ElasticSearch里面如何分组后根据sum值排序

es java 聚合方法——单字段分组后求和

Elasticsearch java API (17)Aggregations 聚合 函数

Elasticsearch 统计代码例子

Elasticsearch——分页查询From&Size VS scroll

ElasticSearch - 解决ES的深分页问题 (游标 scroll)

Elasticsearch 查询in 和 not in 的实现方式

Elasticsearch 统计代码例子

elasticsearch系列四:搜索详解(搜索API、Query DSL)

elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)

随笔分类 - 搜索引擎

Elasticsearch 清空type下所有documents

 

工具

一文上手 Elasticsearch常用可视化管理工具

严选 | Elasticsearch史上最全最常用工具清单

windows下安装ElasticSearch的Head插件

elasticsearch 安装部署以及插件head安装,和使用教程

elasticsearch-head的使用

地址:https://github.com/mobz/elasticsearch-head

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/

 

集群搭建

手把手教你搭建一个Elasticsearch集群

搭建 ElasticSearch 伪集群

以上是关于ElasticSearch学习记录的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch学习记录

python小白学习记录 多线程爬取ts片段

全文搜索引擎ElasticSearch学习记录:mac下安装

elasticsearch学习记录

ElasticSearch 学习笔记一 简介

ElasticSearch7.X和ElasticSearch8.X学习记录