elasticsearch学习手册1

上传人:n**** 文档编号:56539579 上传时间:2018-10-13 格式:DOC 页数:60 大小:1.20MB
返回 下载 相关 举报
elasticsearch学习手册1_第1页
第1页 / 共60页
elasticsearch学习手册1_第2页
第2页 / 共60页
elasticsearch学习手册1_第3页
第3页 / 共60页
elasticsearch学习手册1_第4页
第4页 / 共60页
elasticsearch学习手册1_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《elasticsearch学习手册1》由会员分享,可在线阅读,更多相关《elasticsearch学习手册1(60页珍藏版)》请在金锄头文库上搜索。

1、ElasticSearch 学习资料内部文件:内部文件:1.01.0颁布时间:颁布时间:2014.1.212014.1.21公司 Logo 内部文件:输入文件名和版本号第 1 页 共 60 页目目 录录文件版本说明3参考资料3手册目的3声明3名词定义和缩略语说明31.总述41.1.简介41.2.国外的使用案例41.3.基本概念解析61.3.1.Cluster.61.3.2.Shards61.3.3.Replicas.61.3.4.Recovery.71.3.5.River71.3.6.Gateway 71.3.7.discovery.zen 71.3.8.Transport.72.服务器搭建8

2、2.1.单机环境82.2.服务器环境82.3.中文分词集成92.4.配置详解123.Java API.153.1.与集群交互153.1.1.Node 方式.153.1.2.TransportClient 方式163.2.put Mapping 定义索引字段属性163.3.索引数据19公司 Logo 内部文件:输入文件名和版本号第 2 页 共 60 页3.4.删除索引数据193.5.搜索203.6.批量添加索引213.7.与 MongoDB 同步数据 223.8.使用 More like this 实现基于内容的推荐.25公司 Logo 内部文件:输入文件名和版本号第 3 页 共 60 页 文文

3、件件版版本本说说明明表 1 版本说明版本发布时间修订章节作者1.02014.1.21第一版虞晶 参参考考资资料料1.Elasticsearch 官网:http:/ 手手册册目目的的ElasticSearch 学习资料 声声明明无 名名词词定定义义和和缩缩略略语语说说明明表 2 名词定义及缩略语说明序号缩写说明1ESElasticsearch,一种设计用于云计算的分布式全文索引解决方案。公司 Logo 内部文件:输入文件名和版本号第 4 页 共 60 页1. 总述总述1.1.简介简介ElasticSearch 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。设计用于云计算

4、中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过 HTTP 使用JSON 进行数据索引。我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用 JSON 通过 HTTP 的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch 旨在解决所有这些问题和更多的。1.2.国外的使用案例国外的使用案例Github“Github 使用 Elastic

5、search 搜索 20TB 的数据,包括 13 亿的文件和 1300 亿行的代码”这个不用介绍了吧,码农们都懂的,Github 在 2013 年 1 月升级了他们的代码搜索,由solr 转为 elasticsearch,目前集群规模为 26 个索引存储节点和 8 个客户端节点(负责处理搜索请求) ,详情请看官方博客 https:/ 5 千万地点信息?Foursquare 每天都用 Elasticsearch 做这样的事“Foursquare 是一家基于用户地理位置信息的手机服务网站,并鼓励手机用户同他人分享自己当前所在地理位置等信息。与其他老式网站不同,Foursquare 用户界面主要针对

6、手机而设计,以方便手机用户使用。SoundCloud“SoundCloud 使用 Elasticsearch 来为 1.8 亿用户提供即时精准的音乐搜索服务”SoundCloud 是一家德国网站,提供音乐分享社区服务,成长很快,Alexa 世界排名已达第 236 位。你可以在线录制或上传任何声音到 SoundCloud 与大家分享,可在线上传也可公司 Logo 内部文件:输入文件名和版本号第 5 页 共 60 页以通过软件客户端来上传音乐文件,没有文件大小限制,但免费版限制上传音频总长不可超过 2 个小时播放时长,每首歌曲限最多 100 次下载。SoundCloud 允许音乐通过 Flash

7、播放器方式嵌入到网页中。Fog Creek“Elasticsearch 使 Fog Creek 可以在 400 亿行代码中进行一个月 3 千万次的查询“StumbleUpon”Elasticsearch 是 StumbleUpon 的关键部件,它每天为社区提供百万次的推荐服务“StumbleUpon 是个能发现你喜欢的网页的网站,进去时先注册,注册完就选择你感兴趣的东西,它会自动帮你推荐一些网页,如果你喜欢这个网页就点喜欢按钮,按 stumble按钮就会推荐下一个网页。目前其数据量达到 25 亿,基本数据存储在 HBase 中,并用 elasticsearch 建立索引,elasticsear

8、ch 在其中除了用在搜索功能还有在推荐和统计功能。之前他们是使用 solr 作为搜索,由于 solr 满足不了他们的业务增长需要而替换为 elasticsearch。MozillaMozilla 公司以火狐著名,它目前使用 WarOnOrange 这个项目来进行单元或功能测试,测试的结果以 json 的方式索引到 elasticsearch 中,开发人员可以非常方便的查找 bug。Socorro 是 Mozilla 公司的程序崩溃报告系统,一有错误信息就插入到 Hbase 和Postgres 中,然后从 Hbase 中读取数据索引到 elasticsearch 中,方便查找。SonySony

9、公司使用 elasticsearch 作为信息搜索引擎Infochimps“在 Infochimps,我们已经索引了 25 亿文档,总共占用 4TB 的空间” 。Infochimps 是一家位于德克萨斯州奥斯丁的创业公司,为大数据平台提供商。它主要提供基于 hadoop 的大数据处理方案。公司 Logo 内部文件:输入文件名和版本号第 6 页 共 60 页1.3.Scaling Lucene怎样在 Lucene 之上构建一个分布式、高度伸缩、接近实时的搜索引擎呢?让我们回顾一下在搜索引擎(基于 lucene)伸缩性这条路上都做了那些尝试,并且elasticsearch 是如何尝试并去解决这些挑

10、战的。首先我们了解下最基础的理论知识 building blocks (这些理论基础是构建分布式近实时搜索引擎的基础) 。 接着我们研究一下到底哪种才是最佳的分区策略 partitioning (将lucene 索引文档分割到多个分布式的分片中去) 。 然后我们同样需要决定使用哪种分区复制方式 replication (复制能够保证系统的高可用以及提高搜索的吞吐) 。 最后,我们再看一下事务日志 transaction log (事务日志在 elasticsearch 里面是一个保证数据一致性的非常酷的功能) 。1.3.1. Building Blocks当我们要构建一个分布式接近实时的搜索引

11、擎,并且要让 lucene 可伸缩可扩展,必须首先知道 lucene 的关键概念以及它们与我们要达成目标的一些局限性.DirectoryLucene Directory 是一个抽象的文件系统的接口,用来允许你读写文件,不管 lucene的索引是存放在内存中还是在物理磁盘上,它都是通过 lucene 的 Directory 抽象层来访问和公司 Logo 内部文件:输入文件名和版本号第 7 页 共 60 页维护的。IndexWriterIndexWriter 用来添加、删除和更新 lucene 里面的索引文档。这些操作是在内存中完成以保证更好的性能,但是如果要保证这些操作的持久化,这些操作是需要

12、flush 到磁盘的。并且,flush 操作或者是显式的 commit 提交开销都是比较大的,因为这些操作通常需要处理很多的文件,而处理这些文件又涉及到大量的磁盘 io。此外, 每次只能有一个 IndexWriter 对象来对一个索引目录进行索引操作,并且创建这个对象的开销很大,所以必须尽可能去重用这个对象.Index SegmentsLucene 索引被分解为很多段(segments) 。每个索引段实际上是一个功能完整的 lucene索引,一旦一个索引段创建完成,它将是不可变的,并且不能删除段里面的索引文档。commit 提交操作用来往索引里面添加一个新段。lucene 内部会来对这些段进行

13、合并,所以我们必须要有策略来控制这些合并(MergePolisy, MergeScheuler, etc)。Because segments need to be kept at bay they are being merged continuously by internal Lucene processes (MergePolisy, MergeScheuler, etc)。因为段是不可变的,所以用来做缓存(caching)是一个很好的选择,你可以加载所有的 term 词条并且创建一个跳跃列表( skip lists ) ,或者用来构造 FieldCache,如果段没有变化,你就不需要重

14、新加载。IndexReaderIndexReader 用来执行搜索索引。这个对象通过 IndexWriter 来提供,并且创建代价也是比较高。一旦 IndexReader 打开之后,它就不能够发现打开之后的索引变化,如果要知道这些由 IndexWriter 产生的索引变化,除非刷新 IndexReader 对象(当然前提需要 flush 操作) 。搜索操作在内部其实是按段来进行的(每次一个段).Near Real-Time Search获取一个新的 IndexReader 开销很大,所以也是我们不能每次一有索引操作就真的去获取一个新的 IndexReader,你可以隔一段时间去刷新一下,比如每隔一秒钟等等,这也是我们在这里称之为接近实时( near real-time )的原因.公司 Logo 内部文件:输入文件名和版本号第 8 页 共 60 页1.3.2. Partitioning可能用来伸缩 Lucene 的途径(Possible approach to Scale Lucene):Distributed Directory其中一个途径用来伸缩 Lucene 就是使用分布式文件系统,大文件会被拆分成 chunks块并且会保存到分布式存储系统(比如 Coherence,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 经验/事迹

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号