Elasticsearch介绍

2019-02-28 23:28|来源: 网路

ElasticSearch是一个基于Lucene构建的开源、分布式、RESTful的全文搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。
Elasticsearch可以解决零配置和一个完全免费的搜索模式,可以简单地使用JSON通过HTTP的索引数据,提供高可用和平行扩展,实时搜索等。

2012年11月,获得1000万美元的融资;
2013年02月,获得2400万美元的融资;
2013年初,亲爱的GitHub抛弃了Solr,取用了ElasticSearch来做PB级的搜索;

ElasticSearch一些优秀案例
Github:GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码
Foursquare:实时搜索5千万地理位置信息?Foursquare每天使用ElasticSearch做到了
SoundCloud:SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务
FogCreek:Elasticsearch使FogCreek可以在400亿行代码中进行一个月3千万次的查询
StumbleUpon:Elasticsearch是StumbleUpon的关键部件,它每天为社区提供百万次的推荐服务

ElasticSearch官网
之前的官网是http://www.elasticsearch.org,现在已经更改了域名为https://www.elastic.co
ElasticSearch下载地址:https://www.elastic.co/downloads/elasticsearch

ElasticSearch的一些概念
集群(cluster)
在一个分布式系统里面,可以通过多个elasticsearch运行实例组成一个集群(cluster)。
集群的主节点(master)不是固定的,主节点是动态选举产生,所以不会存在单点故障问题。
在同一个子网内,只需要在每个节点上设置相同的集群名,elasticsearch就会自动的把这些集群名相同的节点组成一个集群。节点和节点之
间通讯以及节点之间的数据分配和平衡全部由elasticsearch自动管理。

节点(node)
每一个运行实例称为一个节点,每一个运行实例既可以在同一机器上,也可以在不同的机器上,每个节点都知道所有文档所处的位置并能够将请求直接转发给拥有数据的节点。所谓运行实例,就是一个服务器进程。在测试环境内,可以在一台服务器上运行多个服务器进程,在生产环境建议每台服务器运行一个服务器进程。
集群启动后会将某个节点选为MasterNode,MasterNode主要负责管理集群中诸如创建或删除索引、从集群中添加或删除节点等集群范围的改变,MasterNode不会关心基于文档的改变或检索。

分片(shards)
es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,每一个小的索引叫做分片,分片后就可以把各个分片分配到不同的节点中。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

副本(replicas)
es每一个分片可以有0到多个副本,每个副本都是分片的完整拷贝,可以用来增加速度,同时也可以提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。同时可以提高es的查询效率,es会自动对搜索请求进行负载均衡。

索引(index)
在elasticsearch里面支持多个索引类似于关系数据库里面每一个服务器可以支持多个数据库一样,一个索引相当于一个数据库,里面存放用户文档数据。使用Lucene完成读写数据的操作,ElasticSearch索引是由一个或多个Lucene索引组成,所以ES中的分片或副本实际上就是一个Lucene索引。在每一索引下面又支持多种类型,类似于关系数据库里面的一个数据库可以有多张表。但是本质上和关系数据库有很大的区别。

恢复(recovery)
数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

数据源(river)
es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数
据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia

网关(Getway)
ES会将各种集群状态信息、索引配置信息等全部持久存放在网关中。es索引的持久化存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到硬盘。当这个es集群关闭再重新启动时就会从gateway中读取索引数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

discovery.zen
es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

Transport
es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

文档(Document)
文档是ES中主要的实体,所有ES的查询都是基于存放在ES中文档资源的查询。每个文档都是由各种域(Field)组成,每个域(Field)有一个名称和一个或多个值构成。实际上,从用户的角度看,一个ES文档就是一个JSON对象。

映射(Mapping)
映射用于定义文档域的属性,这些属性包括分词器,字段类型,存储类型等。对于没有定义的字段类型的属性,ES可以自动通过其字段值进行识别。

类型(Type)
ES中每个文档必须有一个类型定义。这里的类型相当于数据库当中的表,类型定义了字段映射(类似数据库表结构),这样一来,每个索引可以包含多种文档类型,而每种文档类型定义一种映射关系。

路由(Routing)
ES给每个文档建索引后,通过路由可以算出所查的文档处在哪个分片上,因为在建立索引之初使用公式:shard=hash(routting)%number_of_primary_shards进行文档分配。routing值是一个任意的字符串,默认是文档的ID,通过人工指定就可以控制文档存放在哪个shard的位置了。

索引别名(IndexAlias)
索引别名相当于快捷方式或软链接,可以指向一个或多个索引,甚至可以指向带路由的分片。

近实时性nearrealtime(nrt)
Elasticsearch是一个近实时性的搜索平台,所以对于刚建过的索引文件进行查询时需要一个轻微的等待时间(通常为1秒)。

本文参考于网络

相关问答

更多
  • 如何介绍学校[2022-03-18]

    1.学校所处省市 2.建校史 3.学校校训 4.学校规模:教师人数 专业 每年招生人数 在校生人数 5.办学水平
  • 学校简介   沧州医学高等专科学校是一所以医药卫生教育为主的国办市属普通高等学校。办学五十多年来,经过几代人的艰苦奋斗、自强不息、求真务实、开拓创新,使学校具备了良好的办学条件,积淀了丰厚的文化底蕴,教学科研水平稳步提高,社会服务功能不断增强。建校以来,共培养了三万多名合格的卫生技术人才,为沧州地区乃至河北省的医疗、卫生、教育事业做出了积极贡献。   历史沿革 学校始建于1958年,校名为“津沧医学专科学校”;1963年更名为“河北省沧州卫生学校”;1994年被评为“国家级普通重点中专学校”,是当时全国医药 ...
  • 首先态度要热情大方,眼睛要正视对方,然后直接介绍自己大名:您好(主动伸出你的右手与对方友好握手),同时说出自己大名,并要说:“认识你很高兴”。
  • sniffer的介绍[2024-02-19]

    现在来看看**的sniffer程序   sniffit 可以运行在linux Solaris SGI NT等各种平台运行的网络监听软件,他主要针对的是TCP/IP协议的不安全性,对运行该协议的计算机进行监听。   安装   跟我来一步一步走别跑掉了嘻嘻!跑掉了别怪我呀!   1。用tat zvfx sniffit.*.*.*.tgz将下载的sniffit.*.*.*.tgz解压缩到你想要的目的文件夹,如果版本是。0。3。7的话,你会看到该目录下出现一个sniffit。0。3。7的目录。   2。打开snif ...
  • Memcached就是在内存中维护一张巨大的hash表,通过自己的一套算法来维 护数据的操作,这个算法比较复杂,这里我们只做简单的介绍,对我们PHP程序员而言,重点掌握如何在项目如何使 Memcached技术. 本章节要求同学们深刻理解Memcached运行原理,并能够正确使用Memcached对网站优化提速。
  • @AndreiStefan感谢他链接的文章解决了我的问题。 解决方案如下: network.bind_host: 0 感谢你们。 @AndreiStefan gave the solution to my problem thanks to the post he linked. The solution was as straightforward as: network.bind_host: 0 Thank you guys.
  • 默认情况下,elasticsearch只会为查询返回一组有限的结果。 (即搜索*将仅返回默认计数集,而不管匹配的数量)。 通常要实现“流式传输”,您进行初始搜索以获取匹配文档的总数,然后请求范围内的文档(即前10个,后10个等)。 看到 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html 如何申请退回的文件数量。 By default elasticsearch ...
  • elasticsearch网站上的文档显示了从快照恢复特定索引: curl -XPOST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore" -d '{ "indices": "index_1,index_2", "ignore_unavailable": "true", "include_global_state": false, "rename_pattern": "index_(.+)", "rename_replacement" ...