一、概况:

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. JavaScript_DOM(文件对象模型)

    DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口). DOM 描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. DOM1 级将 HTML ...

  2. Java连接ActiveMQ代码示例(Producer和Consumer)

    import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; ...

  3. Employment Planning

    Employment Planning 有n个月,每个月有一个最小需要的工人数量\(a_i\),雇佣一个工人的费用为\(h\),开除一个工人的费用为\(f\),薪水为\(s\),询问满足这n个月正常工 ...

  4. Spring Boot 集成Mybatis实现多数据源

    静态的方式 我们以两套配置方式为例,在项目中有两套配置文件,两套mapper,两套SqlSessionFactory,各自处理各自的业务,这个两套mapper都可以进行增删改查的操作,在这两个主MYS ...

  5. 【JZOJ6433】【luoguP5664】【CSP-S2019】Emiya 家今天的饭

    description analysis 首先可以知道不符合要求的食材仅有一个,于是可以容斥拿总方案数减去选不合法食材的不合法方案数 枚举选取哪一个不合法食材,设\(f[i][j]\)表示到第\(i\ ...

  6. J2EE学习篇之--Spring技术详解

    今天我们来看一下Spring的相关知识,我们知道Spring也是一个开源的框架,这个框架并不像是Struts一样,这个框架是可以用在Java的所有地方,所以,其实开发Android的时候我们也是可以使 ...

  7. 管理员技术(二): 访问练习用虚拟机、 命令行基础技巧 、 挂载并访问光盘设备、ls列表及文档创建、复制删除移动

    一.访问练习用虚拟机 目标: 学会在教学环境中访问练习用虚拟机,主要完成以下事项: 1> 快速重置教学虚拟机环境       2> 通过“虚拟系统管理器”访问虚拟机       3> ...

  8. MFC弹出选择文件和选择文件夹代码

    选择文件夹 TCHAR szSelectedDir[]; BROWSEINFO bi; ITEMIDLIST *il; bi.hwndOwner = m_hWnd; bi.pidlRoot = NUL ...

  9. 行内元素与块级元素的区别,行内块级元素在IE8-的兼容性

    行内元素与块级元素的区别 行内元素最好不要包裹块级元素,但是块级元素可以任意的包裹行内元素 行内元素如果其上一个元素也是行内元素,则他们会分布在统一水平线上,即在一行上排列,块级元素不论上一个元素是行 ...

  10. CentOS 7 挂载ntfs分区!

    装好centos7发现可以看到分区,可是打不开,还是得用ntfs-3g 官网下好 http://www.tuxera.com/community/ntfs-3g-download/ 然后解压tar - ...