Elasticsearch原理

本文的内容主要来自《Elasticsearch权威指南》。

1.Elasticsearch简介

Elasticsearch是一个实时分布式搜索和分析引擎,它让你以前所未有的速度处理大数据成为可能。Elasticsearch是一个基于Apache Lucene的开源搜索引擎。Elasticsearch也使用Java开发并使用Lucence作为其核心来实现所能索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏 Lucene的复杂性,从而让全文搜索变得简单。

Elasticsearch具体以下几个特性

(1).   简单易学

Elasticsearch对初学者隐藏了复杂的搜索引擎理论,它开箱即用,只需很少的学习即可以生产环境中使用。所有的功能都被集成到一个服务里面,应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。

(2).   支持分布式的实时搜索

一般的搜索都可以实现秒级搜索,搜索结果在较短的时间内可以出来,从而实现实时查询。与Hadoop这种离线分析框架相比,Elasticsearch要快很多,。

(3).   支持集群和横向扩展

Elasticsearch支持结点集群和横向扩展,处理PB级结构化或非结构化数据。

Elastcisearch的缺点如下

(1).   数据膨胀

Elasticsearch是使用索引来提高查询速度,在数据量比较大的情况下,索引会占用很多存储空间,笔者做过的项目,1G的原始数据,录入Elasticsearch后,会变成8G。


2.Elasticsearch原理

Elasticsearch保存的是JSON类型的文档数据,文档归属于一种类型,而这些类型存在于索引中,我们可以画一些简单的对比图来类比传统关系数据库:


Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。


一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。

一个分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分。

分片可以是主分片(primaryshard)或者是复制分片(replicashard).索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据。

复制分片只是主分片的一个副本,它可以防止硬件导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档。

当索引创建完成的时候,主分片的数量就固定了的,但是复制分片的数量可以随时调整。

索引与主分片、复制分片的关系如下:



Elasticsearch 简介 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。elasticSearch 的使用场景 1、在海量数据前提下,对数据进行检索。比如:京东,淘宝等电商项目课程目标: 1. 了解企业级搜索引擎2. 安装elasticsearch 课程目录: 01 课程介绍02 elasticsearch 简介03 elasticsearch 使用场景04 安装elasticsearch 之前先安装jdk05 安装elasticsearch06 测试elasticsearch是否安装成功 07 安装kibana08 elasticsearch 基本认识 以及添加索引和删除索引09 elasticsearch 添加查询数据10 elasticsearch 修改删除数据11 elasticsearch 有条件的查询12 分词子属性fuzzy查询13 elasticsearch 过滤使用14 elasticsearch 排序与分页15 elasticsearch 如何查询指定的字段16 elasticsearch 高亮显示17 elasticsearch 聚合18 elasticsearch mapping 概念19 elasticsearch 的中文词库20 elasticsearch 中文词库安装测试21 elasticsearch 中文词库的使用案例22 elasticsearch 自定义词库配置23 安装nginx 配置中文词库24 测试elasticsearch 自定义中文词库25 搭建项目父工程26 搭建项目bean-interface-common27 搭建search 的service web 项目28 测试项目是否能与elasticsearch联通29 创建数据库并搭建首页30 数据上传功能的实现类完成31 数据上传控制器完成32 dubbo 介绍以及安装zookeeper33 将数据从mysql 上传到elasticsearch 中34 elasticsearch查询功能分析35 编写业务需求的dsl 语句36 编写输入参数返回结果集的实体类37 实现类编写38 编写实现类中dsl 语句39 返回集结果转换40 结果测试41 测试通过输入查询条件并将数据显示到页面
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值