Elasticsearch

Elasticsearch概述

1.1 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用JAVA开发的,并作为Apache许可条款下开放源码发布,是当前流行的企业级搜索引擎。

概括:基于RESTful标准的高扩展的实时数据分析的全文搜索工具

elasticsearch 是一个接近实时的搜索平台。这意味着从索引一个文档到这个文档可以被搜索的过程,仅有轻微的延迟(正常情况是一秒)

1.2Elasticsearch的基本概念

index

类似于mysql数据库中的database

Type

类似于mysql数据库中的table表,es中可以在index中建立type,通过mapping进行映射

document

由于es存储的数据是文档型的,一条数据对应一篇文文档即相当于mysql数据库中的一行数据row,一个文档中可以有多个字段也就是数据库一行可以有多列。

field

es中一个文档对应的多个列与数据库中每一列对应

mapping

可以理解为mysql中对应的schema,es中的mapping增加了动态识别功能

Elasticsearch基本操作

倒排索引

Elasticsearch使用一种称为倒排索引的结构,他适用于

标准化规则

支持的数据类型:

核心数据类型:

字符型:string,string类型包括:

text和keyword

text类型被用来索引长文本,在建立索引前会将这些文本进行分词,转化为词的组合,建立索引,允许es来检索这些词语,text类型不能用来拍讯和聚合。

keyword类型不需要进行分词,可以用来检索过滤,排序和聚合,keyword类型字段只能用本身进行检索

索引不可变的原因:

倒排索引包括:

文档的列表,文档数量,词条在每个文档中出现的词次数,出现的位置,每个文档的长度,所有文档的平均长度

索引不变的原因:

不需要锁,提升了并发性能。可以一直保存在缓存中,节省cpu和io开销

文档数据路由原理

1、文档路由到分片上

一个索引由多个分片构成

文档查询内部原理

1、查询请求发送给任意一个节点,该节点就成了coordinating node(协调节点),该节点使用路由算法算出文档所在的primary shard

2、协调节点把请求转发给primary shard也可以转发给replica shard使用轮询调度算法,把请求平均分配至primary shard和replica shard

3、处理请求的节点把结果返回给协调节点,协调节点在返回给应用程序

注:请求的文档还在建立索引的过程中,primary shard上存在,replica shard上不存在,但请求被转发到replica shard上,这时候会提示文档找不到

原文地址:https://www.cnblogs.com/xuliang666/p/11219119.html