ElasticSearch学习

一、ElasticSearch学习是什么

百度百科:

http://baike.baidu.com/link?url=K7SOCIh7Tji0y47VmIbIwMsfx_3Pn7FQpvjnUQB_CJwnVGQRraOng265h0-30nZeNU6Z0-_3zPJEyZFnH5Cfgq6hK_pmGNm48svsHqEIhGO

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二最流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。

Wikipedia:

https://en.wikipedia.org/wiki/Elasticsearch

Elasticsearchis asearch enginebased

onLucene. It provides a distributed,multitenant-capable full-text search engine with

anHTTPweb interface and

schema-freeJSONdocuments.

Elasticsearch is developed inJavaand is

released asopen sourceunder the

terms of theApache

License. Official clients are available inJava,.NET(C#),Python,Groovyand many

other languages.[2]Elasticsearch

is the most popular enterprise search engine followed byApache Solr, also based on Lucene.[3]

It is developed alongside a data

collection and log parsing engine calledLogstash, and an

analytics and visualisation platform calledKibana. The threeproducts are designed to be used as an integrated solution, referred to as the"ELK stack".

1.相关概念

1.1多租户技术Multitenancy

1.1.1概述:

360百科:

http://baike.so.com/doc/6381782-6595432.html

多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。

由于云计算议题的发烧,在共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离,让多租户技术成为云计算技术下的显学。

Wikipedia:

https://en.wikipedia.org/wiki/Multitenancy

The term "software multitenancy"refers to asoftware

architecturein which a singleinstanceofsoftwareruns on a

server and serves multiple tenants. A tenant is a group of users who share a

common access with specific privileges to the software instance. With a

multitenant architecture, asoftware applicationis

designed to provide every tenant a dedicated share of the instance - including

its data, configuration, user management, tenant individual functionality

andnon-functional

properties. Multitenancy contrasts with multi-instance

architectures, where separate software instances operate on behalf of different

tenants.[1]

Some commentators regard multitenancy as

an important feature ofcloud

computing.[2][3]

1.1.2技术:

技术上,多租户技术可以通过许多不同的方式来切割用户的应用程序环境或数据。

数据面(dataapproach:供应商可以利用切割数据库(database),切割存储区(storage),切割结构描述(schema)或是表格(table)来隔离租户的数据,必要时会需要进行对称或非对称加密以保护敏感数据,但不同的隔离作法有不同的实现复杂度与风险。

程序面(applicationapproach:供应商可以利用应用程序挂载(hosting)环境,于程(process)上切割不同租户的应用程序运行环境,在无法跨越进程通信的情况下,保护各租户的应用程序运行环境,但供应商的运算环境要够强。

系统面(systemapproach:供应商可以利用虚拟化技术,将实体运算单元切割成不同的虚拟机,各租户可以使用其中一至数台的虚拟机来作为应用程序与数据的保存环境,但对供应商的运算能力要更要求。

1.1.3实现方式:

多租户技术的实现重点,在于不同租户间应用程序环境的隔离(applicationcontextisolation)以及数据的隔离(dataisolation),以维持不同租户间应用程序不会相互干扰,同时数据的保密性也够强。

应用程序部份:通过进程或是支持多应用程序同时运行的装载环境(例如WebServer,像是Apache或IIS等)来做进程间的隔离,或是在同一个伺服程序(server)进程内以运行绪的方式隔离。

数据部份:通过不同的机制将不同租户的数据隔离,Force.com是采用中介数据(metadata)的技术来切割,微软MSDN的技术文件则是展示了使用结构描述的方式隔离。

2.ES技术技术概念

2.1基本概念

ElasticSearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful的全文本搜索引擎。

不过,ElasticSearch却也不仅只是一个全文本搜索引擎,它还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索;也是一个带实时分析功能的分布式搜索引擎,并且能够扩展至数以百计的服务器存储及处理PB级的数据。

如前所述,ElasticSearch在底层利用Lucene完成其索引功能,因此其许多基本概念源于Lucene

2.1.1索引(Index)

ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库,或者一个数据存储方案(schema)。

索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。

2.1.2类型(Type)

类型是索引内部的逻辑分区(category/partition),然而其意义完全取决于用户需求。因此,一个索引内部可定义一个或多个类型(type)。一般来说,类型就是为那些拥有相同的域的文档做的预定义。

例如,在索引中,可以定义一个用于存储用户数据的类型,一个存储日志数据的类型,以及一个存储评论数据的类型。类比传统的关系型数据库领域来说,类型相当于“表”。

2.1.3文档(Document)

文档是Lucene索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。

文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。

2.1.4映射(Mapping)

ES中,所有的文档在存储之前都要首先进行分析。用户可根据需要定义如何将文本分割成token、哪些token应该被过滤掉,以及哪些文本需要进行额外处理等等。

另外,ES还提供了额外功能,例如将域中的内容按需排序。事实上,ES也能自动根据其值确定域的类型。

2.2集群概念

2.2.1集群(Cluster)

ES集群是一个或多个节点的集合,它们共同存储了整个数据集,并提供了联合索引以及可跨所有节点的搜索能力。

多节点组成的集群拥有冗余能力,它可以在一个或几个节点出现故障时保证服务的整体可用性。

集群靠其独有的名称进行标识,默认名称为“elasticsearch”。节点靠其集群名称来决定加入哪个ES集群,一个节点只能属一个集群。

如果不考虑冗余能力等特性,仅有一个节点的ES集群一样可以实现所有的存储及搜索功能。

2.2.2节点(Node)

运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。

类似于集群,节点靠其名称进行标识,默认为启动时自动生成的随机Marvel字符名称。

用户可以按需要自定义任何希望使用的名称,但出于管理的目的,此名称应该尽可能有较好的识别性。

节点通过为其配置的ES集群名称确定其所要加入的集群。

2.2.3分片(Shard)和副本(Replica)

ES的“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片(shard)。

每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为5个。

Shard有两种类型:primary和replica,即主shard及副本shard。

Primary shard用于文档存储,每个新的索引会自动创建5个Primary

shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其Primary shard的数量将不可更改。

Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能。

特点:

1.每个Primary shard默认配置了一个Replica

shard,但也可以配置多个,且其数量可动态更改。ES会根据需要自动增加或减少这些Replica shard的数量。

2. ES集群可由多个节点组成,各Shard分布式地存储于这些节点上。

3. ES可自动在节点间按需要移动shard,例如增加节点或节点故障时。简而言之,分片实现了集群的分布式存储,而副本实现了其分布式处理及冗余功能。

二、原理

http://www.cnblogs.com/valor-xh/p/6095894.html

1.搜索引擎组件介绍

著名的开源程序Lucene是索引组件,它提供了搜索程序的核心索引和搜索模块,例如图中的“Index”及下面的部分;而ElasticSearch则更像一款搜索组件,它利用Lucene进行文档索引,并向用户提供搜索组件,例如“Index”上面的部分。二者结合起来组成了一个完整的搜索引擎。

2.ES的数据查询

查询执行过程通常要分成两个阶段,分散阶段合并阶段

分散阶段是向所查询的索引中的所有shard发起执行查询的过程,合并阶段是将各shard返回的结果合并、排序并响应给客户端的过程。

向ElasticSearch发起查询操作有两种方式:一是通过RESTful request API传递查询参数,也称“query-string”;另一个是通过发送REST request body,也称作JSON格式。

三、特性

1.实时文档存储,文档对象的每个field都建立了索引,都能被检索

2.构建适应于不同规模的应用的体系结构,在此之上实现分布式搜索。

3.为其他平台系统提供了具有rest风格的原生java api。也有hadoop的依赖包

4.简单可用性强,不需要对搜索原理有深入的理解。平台有免费模式。

具有可伸缩性,灵活的构建和易用性。提供一个易用性的平台,进行规模扩展时无需考虑核心功能与用户自定义选项间妥协。

四、和solr区别

1.Solr利用Zookeeper进行分布式管理;而Elasticsearch自身带有分布式协调管理功能;

2.Solr支持更多格式的数据json,XML等;而Elasticsearch仅支持json文件格式;

3.Solr官方提供的功能更多;而Elasticsearch本身更注重于核心功能,高级功能多由第三方插件提供;

4.Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch。

5.Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。

Ps:走过的路,每一步都算数,沉淀我所学习,累积我所见闻,分享我所体验;

文\楼外楼,未经许可,禁止转载。(微信公众号:PM天秤座的楼外楼)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • es 的来源 问题拆解 如果用数据库来实现会怎么样? 什么是全文检索? 什么是 Lucene? 数据库实现 先看第...
    小聪明李良才阅读 761评论 0 0
  • 欢迎访问本人博客:http://wangnan.tech Elasticsearch是一个可伸缩的开源全文搜索和分...
    GhostStories阅读 3,081评论 0 10
  • Solr&ElasticSearch原理及应用 一、综述 搜索 http://baike.baidu.com/it...
    楼外楼V阅读 7,212评论 1 17
  • 最近的周末都过的还算充实,基本的主题是行走+阅读。以前很多时候会犯懒,周末窝在家里,有时什么也没干时间就这样流走,...
    beirikui阅读 282评论 0 1
  • 昨天到了杭州,下午同学带我去了主题餐厅,还去逛了最繁华的街道,吃到了特色食品,住在了四星酒店,今天进了园区,越来...
    心羽暖姐姐阅读 95评论 0 0