一、概况:

Elastic Search 是一个基于Apache Lucene™工具包的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene 只是一个库。想要使用它,你必须使用 Java 来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene 非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

Elastic Search 也使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTFul API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。Elastic Search 不仅仅是 Lucene 和全文搜索,它还具有以下特性:

①    分布式的实时文件存储,每个字段都被索引并可被搜索

②    分布式的实时分析搜索引擎

③    可以扩展到上百台服务器,处理 PB 级结构化和非结构化数据

由于 Elastic Search 具有能够实时搜索、开源、稳定、快速、支持分布式等众多优点,所以许多国外著名的公司都在使用 Elastic Search。维基百科(Wikipedia)、StackOverflow、Github 等公司的全文检索、关键词高亮、实时键入搜索、自动纠错、相关内容推荐等功能都是基于 ElasticSearch 实现的。除此之外,ElasticSearch 也备受创业公司的青睐,它对机器的性能没有较严苛的要求,即使在普通 PC 机组成的集群中也可以正常运行。

二、原理简介:

        Elastic Search 结构示意图

在一个分布式Elastic Search集群中,有一个主节点(master),但是Elastic Search 是去中心化的,也就是说主节点是动态选举出来的,不存在单点故障的问题。节点与节点之间的通讯及节点之间的数据分配和平衡全部由Elastic Search 自动管理。Elastic Search 就是一个整体,主要有以下几个概念需要介绍一下。

Cluster:代表一个集群,集群中有多个节点。

节点(node):每一个运行实例都称为一个节点。所谓运行实例,也即是一个服务器进程。

Shards:索引分片,当面对海量数据时,其索引也会很大,因此我们需要把索引拆分成多个分片并将其分布在不同的节点上。这时我们在搜索海量数据时就可以实现分布式快速搜索了。

Replicas:索引副本,其作用是一方面提高系统的容错性,如果某个node 或者 Shards 不能工作了,Replicas 就可以快速恢复数据。另一方面,索引副本的存在还可以提高系统查询速度,因为 Elastic Search 具有负载均衡的功能,而索引副本可以代替索引分片进行搜索。

Recovery:代表数据恢复或者叫做数据重新分布,Elastic Search 可以重新分配索引分片以保证负载均衡。同时 Recovery 还可以自动恢复节点数据。

Gateway:代表着 Elastic Search索引快照存储方式,Elastic Search 默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway 对索引快照进行存储,当这个 Elastic Search 集群关闭再重新启动时就会从 gateway 中读取索引备份数据。

Transport:代表内部节点或集群与客户端交互的方式。

如上文所述,Elastic Search 内容检索集群还有如下几点优势:便捷的分布式安装部署,快速而强大的实时全文检索,能很好地融合 Hadoop 开发平台的存储集群。因此,这一分布式开源全文检索引擎框架成为许多大公司构建搜索引擎的首选。

Elastic Search 小调研的更多相关文章

  1. 深入分析Elastic Search的写入过程

    摘要 之前写过一篇ElasticSearch初识之吐槽,不知觉竟然过去了两年了.哎,时光催人老啊.最近又用到了ES,想找找过去的总结文档,居然只有一篇,搞了半年的ES,遇到那么多的问题,产出只有这么点 ...

  2. Elastic Search快速上手(2):将数据存入ES

    前言 在上手使用前,需要先了解一些基本的概念. 推荐 可以到 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.htm ...

  3. elastic search&logstash&kibana 学习历程(一)es基础环境的搭建

    elastic search 6.1.x 常用框架: 1.Lucene Apache下面的一个开源项目,高性能的.可扩展的工具库,提供搜索的基本架构: 如果开发人员需用使用的话,需用自己进行开发,成本 ...

  4. elastic search book [ ElasticSearch book es book]

    谁在使用ELK 维基百科, github都使用 ELK (ElasticSearch es book) ElasticSearch入门 Elasticsearch入门,这一篇就够了==>http ...

  5. aws ec2 安装Elastic search 7.2.0 kibana 并配置 hanlp 分词插件

    文章大纲 Elastic search & kibana & 分词器 安装 版本控制 下载地址 Elastic search安装 kibana 安装 分词器配置 Elastic sea ...

  6. 初识Elastic search—附《Elasticsearch权威指南—官方guide的译文》

    本文作为Elastic search系列的开篇之作,简要介绍其简要历史.安装及基本概念和核心模块. 简史 Elastic search基于Lucene(信息检索引擎,ES里一个index—索引,一个索 ...

  7. 教你用Elastic Search:运行第一条Hello World搜索命令

    摘要:Elastic Search可实时对数据库进行全文检索.处理同义词.从同样的数据中生成分析和聚合数据. 本文分享自华为云社区<Elastic Search入门(一): 简介,安装,运行第一 ...

  8. elastic search查询命令集合

    Technorati 标签: elastic search,query,commands 基本查询:最简单的查询方式 query:{"term":{"title" ...

  9. elastic search 学习笔记

    Elastic search在数据分析的应用中相当于一个数据库的搜索引擎. 跟MySQL类似,它有自己的查询语言,只不过不是关系型数据库,属于NoSQL. 可以根据索引从分布式服务器文件系统中快速存取 ...

随机推荐

  1. 43-python基础-python3-字符串-常用字符串方法(一)-upper()-lower()-isupper()-islower()

    请注意, 这些方法没有改变字符串本身,而是返回一个新字符串. 如果你希望改变原来的字符串,就必须在该字符串上调用 upper()或 lower(),然后将这个新字符串赋给保存原来字符串的变量.   1 ...

  2. c# PID算法入门

    离开工控行业已经有一段时间了,最近回忆起以前的工作,又对 PID 算法有了兴趣.所以写了一个小项目,希望可以帮到需要的人,也算是对那段工作经历的一个总结. 这是一个 winform 的项目.负载是一个 ...

  3. IDEA中将工程打包成war包及部署到Tomcat流程

    工程打包成war包及部署到Tomcat流程 再IDEA开发工具中,将工程打包成war包流程: 父pom里需要移除内置的tomcat <dependency> <groupId> ...

  4. 9、springcloud整合logback打印sql语句

    Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core.logback- classic和logback-access.logback-c ...

  5. javascript 中的函数

    /*   第二天   */ 函数 函数是js里最有趣的东西了,函数实际上就是对象,每个函数Function类型的实例,函数名实际上是指向函数对象的指针.不带圆括号的函数时访问函数的指针,带圆括号的是调 ...

  6. 一句话的Android增量更新框架(增量更新)

    转自:http://www.jianshu.com/p/a9ec8fa780e2 Android应用更新要使用完整的新版本Apk安装,增量更新则是提供一个新旧版本偏差数据的patch包供应用下载,然后 ...

  7. 【JavaWeb项目】一个众筹网站的开发(五)后台用户登录功能

    用户模块 1)注册 表单校验,使用校验插件 用户密码需要加密存储 注册成功后来到管理控制台,将用户放在session中,防止以后获取 以后用户经常获取用户id,使用mabatis主键自增策略,保存用户 ...

  8. 搜索引擎优化 TF_IDF之Java实现

    实现之前,我们要事先说明一些问题: 我们用Redis对数据进行持久化,存两种形式的MAP: key值为term,value值为含有该term的urlkey值为url,value值为map,记录term ...

  9. Java习题练习

    Java习题练习 1. 依赖注入和控制反转是同一概念: 依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同.依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应 ...

  10. base64和Xxtea的加密和解密

    base64和Xxtea的加密和解密 数据加密是web数据安全的一种方式,前几天拿到一个base64+xxtea加密的数据,现在在这里整理一下使用的过程.首先当然是全网站找解密方法,但是最后的结果不是 ...