Elasticsearch权威指南(中文版)5040

上传人:沈*** 文档编号:194622329 上传时间:2023-03-13 格式:PDF 页数:13 大小:764.10KB
收藏 版权申诉 举报 下载
Elasticsearch权威指南(中文版)5040_第1页
第1页 / 共13页
Elasticsearch权威指南(中文版)5040_第2页
第2页 / 共13页
Elasticsearch权威指南(中文版)5040_第3页
第3页 / 共13页
资源描述:

《Elasticsearch权威指南(中文版)5040》由会员分享,可在线阅读,更多相关《Elasticsearch权威指南(中文版)5040(13页珍藏版)》请在装配图网上搜索。

1、Elasticsearch 权威指南(中文版)1、入门 Elasticsearch 是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:维基百科使用 Elasticsearch 提供全文搜索并高亮关键字,以及输入实时搜索(search-as-you-type)和搜索纠错(did-you-mean)等搜索建议功能。英国卫报使用Elasticsearch 结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。StackOverflow 结合全文搜索与地理位置查询,以及 more-li

2、ke-this 功能来找到相关的问题和答案。Github 使用 Elasticsearch 检索 1300 亿行的代码。但是 Elasticsearch 不仅用于大型企业,它还让像 DataDog 以及 Klout 这样的创业公司将最初的想法变成可扩展的解决方案。Elasticsearch 可以在你的笔记本上运行,也可以在数以百计的服务器上处理 PB 级别的数据。Elasticsearch 所涉及到的每一项技术都不是创新或者革命性的,全文搜索,分析系统以及分布式数据库这些早就已经存在了。它的革命性在于将这些独立且有用的技术整合成一个一体化的、实时的应用。它对新用户的门槛很低,当然它也会跟上你技

3、能和需求增长的步伐。如果你打算看这本书,说明你已经有数据了,但光有数据是不够的,除非你能对这些数据做些什么事情。很不幸,现在大部分数据库在提取可用知识方面显得异常无能。的确,它们能够通过时间戳或者精确匹配做过滤,但是它们能够进行全文搜索,处理同义词和根据相关性给文档打分吗?它们能根据同一份数据生成分析和聚合的结果吗?最重要的是,它们在没有大量工作进程(线程)的情况下能做到对数据的实时处理吗?这就是 Elasticsearch 存在的理由:Elasticsearch 鼓励你浏览并利用你的数据,而不是让它烂在数据库里,因为在数据库里实在太难查询了。Elasticsearch 是你新认识的最好的朋友

4、。1.1、是什么 为了搜索,你懂的 Elasticsearch 是一个基于 Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene 只是一个库。想要使用它,你必须使用 Java 来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene 非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。Elasticsearch 也使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏 Lucene 的

5、复杂性,从而让全文搜索变得简单。不过,Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它:分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据 而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。上手 Elasticsearch 非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。Elasticsearch 在 Apache

6、2 license 下许可使用,可以免费下载、使用和修改。随着你对 Elasticsearch 的理解加深,你可以根据不同的问题领域定制Elasticsearch 的高级特性,这一切都是可配置的,并且配置非常灵活。模糊的历史 多年前,一个叫做 Shay Banon 的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的 Lucene。直接基于 Lucene 工作会比较困难,所以 Shay 开始抽象 Lucene 代码以便Java 程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Comp

7、ass”。后来 Shay 找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写 Compass 库使其成为一个独立的服务叫做 Elasticsearch。第一个公开版本出现在 2010 年 2 月,在那之后 Elasticsearch 已经成为Github 上最受欢迎的项目之一,代码贡献者超过 300 人。一家主营Elasticsearch 的公司就此成立,他们一边提供商业支持一边开发新功能,不过 Elasticsearch 将永远开源且对所有人可用。+Shay 的妻子依旧等待着她的食谱搜索 1.2、安装 安装

8、Elasticsearch 理解 Elasticsearch 最好的方式是去运行它,让我们开始吧!安装 Elasticsearch 唯一的要求是安装官方新版的 Java,地址: 你可以从 elasticsearch.org/download 下载最新版本的 Elasticsearch。curl-L-O http:/download.elasticsearch.org/PATH/TO/VERSION.zip unzip elasticsearch-$VERSION.zipcd elasticsearch-$VERSION 1.从 elasticsearch.org/download 获得最新可用

9、的版本号并填入 URL中 提示:在生产环境安装时,除了以上方法,你还可以使用 Debian 或者RPM 安装包,地址在这里:downloads page,或者也可以使用官方提供的 Puppet module 或者 Chef cookbook。安装 Marvel Marvel 是 Elasticsearch 的管理和监控工具,在开发环境下免费使用。它包含了一个叫做Sense的交互式控制台,使用户方便的通过浏览器直接与Elasticsearch 进行交互。Elasticsearch 线上文档中的很多示例代码都附带一个View in Sense的链接。点击进去,就会在Sense控制台打开相应的实例。

10、安装 Marvel 不是必须的,但是它可以通过在你本地 Elasticsearch 集群中运行示例代码而增加与此书的互动性。Marvel 是一个插件,可在 Elasticsearch 目录中运行以下命令来下载和安装:./bin/plugin-i elasticsearch/marvel/latest 你可能想要禁用监控,你可以通过以下命令关闭 Marvel:echo marvel.agent.enabled:false ./config/elasticsearch.yml 运行 Elasticsearch Elasticsearch 已经准备就绪,执行以下命令可在前台启动:./bin/elas

11、ticsearch 如果想在后台以守护进程模式运行,添加-d参数。打开另一个终端进行测试:curl http:/localhost:9200/?pretty 你能看到以下返回信息:status:200,name:Shrunken Bones,version:number:1.4.0,lucene_version:4.10 ,tagline:You Know,for Search 这说明你的 ELasticsearch 集群已经启动并且正常运行,接下来我们可以开始各种实验了。集群和节点 节点(node)是一个运行着的 Elasticsearch 实例。集群(cluster)是一组具有相同clus

12、ter.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。你最好找一个合适的名字来替代cluster.name的默认值,比如你自己的名字,这样可以防止一个新启动的节点加入到相同网络中的另一个同名的集群中。你可以通过修改config/目录下的elasticsearch.yml文件,然后重启ELasticsearch 来做到这一点。当 Elasticsearch 在前台运行,可以使用Ctrl-C快捷键终止,或者你可以调用shutdown API 来关闭:curl-XPOST http:/localhost:9200/_shutdown 查看 Mar

13、vel 和 Sense 如果你安装了 Marvel(作为管理和监控的工具),就可以在浏览器里通过以下地址访问它:http:/localhost:9200/_plugin/marvel/你可以在 Marvel 中通过点击dashboards,在下拉菜单中访问 Sense 开发者控制台,或者直接访问以下地址:http:/localhost:9200/_plugin/marvel/sense/1.3.API 与 Elasticsearch 交互 如何与 Elasticsearch 交互取决于你是否使用 Java。Java API Elasticsearch 为 Java 用户提供了两种内置客户端:节

14、点客户端(node client):节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上。传输客户端(Transport client):这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。两个 Java 客户端都通过 9300 端口与集群交互,使用 Elasticsearch 传输协议(Elasticsearch Transport Protocol)。集群中的节点之间也通过 9300端口进行通信。如果此端口未开放,你的节点将不能组成集

15、群。TIP Java 客户端所在的 Elasticsearch 版本必须与集群中其他节点一致,否则,它们可能互相无法识别。关于 Java API 的更多信息请查看相关章节:Java API 基于 HTTP 协议,以 JSON 为数据交互格式的 RESTful API 其他所有程序语言都可以使用 RESTful API,通过 9200 端口的与Elasticsearch 进行通信,你可以使用你喜欢的 WEB 客户端,事实上,如你所见,你甚至可以通过curl命令与 Elasticsearch 通信。NOTE Elasticsearch 官方提供了多种程序语言的客户端Groovy,Javascrip

16、t,.NET,PHP,Perl,Python,以及 Ruby还有很多由社区提供的客户端和插件,所有这些可以在文档中找到。向 Elasticsearch 发出的请求的组成部分与其它普通的 HTTP 请求是一样的:curl-X:/:/?-d VERB HTTP 方法:GET,POST,PUT,HEAD,DELETE PROTOCOL http 或者 https 协议(只有在 Elasticsearch 前面有https 代理的时候可用)HOST Elasticsearch 集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫 localhost PORT Elasticsearch HTTP

17、 服务所在的端口,默认为 9200 PATH API 路径(例如_count 将返回集群中文档的数量),PATH 可以包含多个组件,例如_cluster/stats 或者_nodes/stats/jvm QUERY_STRING 一些可选的查询请求参数,例如pretty参数将使请求返回更加美观易读的 JSON 数据 BODY 一个 JSON 格式的请求主体(如果请求需要的话)举例说明,为了计算集群中的文档数量,我们可以这样做:curl-XGET http:/localhost:9200/_count?pretty-d query:match_all:Elasticsearch 返回一个类似20

18、0 OK的 HTTP 状态码和 JSON 格式的响应主体(除了HEAD请求)。上面的请求会得到如下的 JSON 格式的响应主体:count:0,_shards:total:5,successful:5,failed:0 我们看不到 HTTP 头是因为我们没有让curl显示它们,如果要显示,使用curl命令后跟-i参数:curl-i-XGET localhost:9200/对于本书的其余部分,我们将简写curl请求中重复的部分,例如主机名和端口,还有curl命令本身。一个完整的请求形如:curl-XGET localhost:9200/_count?pretty-d query:match_al

19、l:我们将简写成这样:GET/_count query:match_all:事实上,在 Sense 控制台中也使用了与上面相同的格式。1.4.文档 面向文档 应用中的对象很少只是简单的键值列表,更多时候它拥有复杂的数据结构,比如包含日期、地理位置、另一个对象或者数组。总有一天你会想到把这些对象存储到数据库中。将这些数据保存到由行和列组成的关系数据库中,就好像是把一个丰富,信息表现力强的对象拆散了放入一个非常大的表格中:你不得不拆散对象以适应表模式(通常一列表示一个字段),然后又不得不在查询的时候重建它们。Elasticsearch 是面向文档(document oriented)的,这意味着它

20、可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在 Elasticsearch 中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是 Elasticsearch 能够执行复杂的全文搜索的原因之一。JSON ELasticsearch 使用 Javascript 对象符号(JavaScript Object Notation),也就是 JSON,作为文档序列化格式。JSON 现在已经被大多语言所支持,而且已经成为 NoSQL 领域的标准格式。它简洁、简单且容易阅读。以下使用

21、JSON 文档来表示一个用户对象:email:*,first_name:John,last_name:Smith,info:bio:Eco-warrior and defender of the weak,age:25,interests:dolphins,whales ,join_date:2014/05/01 尽管原始的user对象很复杂,但它的结构和对象的含义已经被完整的体现在JSON 中了,在 Elasticsearch 中将对象转化为 JSON 并做索引要比在表结构中做相同的事情简单的多。NOTE 尽管几乎所有的语言都有相应的模块用于将任意数据结构转换为 JSON,但每种语言处理细节不同。具体请查看“serialization”or“marshalling”两个用于处理 JSON 的模块。Elasticsearch 官方客户端会自动为你序列化和反序列化 JSON。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!