ElasticSearch(一)——入门

Elasticsearch是一个实时分布式搜索和分析引擎。

它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。

英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。StackOverflow结合全文搜索与地理位置查询,以及more-like-this功能来找到相关的问题和答案。Github使用Elasticsearch检索1300亿行的代码。但是Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决方案。Elasticsearch可以在你的笔记本上运行,也可以在数以百计的服务器上处理PB级别的数据。Elasticsearch所涉及到的每一项技术都不是创新或者革命性的,全文搜索,分析系统以及分布式数据库这些早就已经存在了。它的革命性在于将这些独立且有用的技术整合成一个一体化的、实时的应用。它对新用户的门槛很低,当然它也会跟上你技能和需求增长的步伐。如果你打算看这本书,说明你已经有数据了,但光有数据是不够的,除非你能对这些数据做些什么事情。很不幸,现在大部分数据库在提取可用知识方面显得异常无能。的确,它们能够通过时间戳或者精确匹配做过滤,但是它们能够进行全文搜索,处理同义词和根据相关性给文档打分吗?它们能根据同一份数据生成分析和聚合的结果吗?最重要的是,它们在没有大量工作进程(线程)的情况下能做到对数据的实时处理吗?这就是Elasticsearch存在的理由:Elasticsearch鼓励你浏览并利用你的数据,而不是让它烂在数据库里,因为在数据库里实在太难查询了。Elasticsearch是你新认识的最好的朋友。


Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,
Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到
你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如
何工作的。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是
它的目的是通过简单的 RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据
而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的 RESTful API 、各种
语言的客户端甚至命令行与之交互。
上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引
擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。
Elasticsearch在Apache 2 license下许可使用,可以免费下载、使用和修改。
随着你对Elasticsearch的理解加深,你可以根据不同的问题领域定制Elasticsearch的高级特
性,这一切都是可配置的,并且配置非常灵活。
模糊的历史
多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他
便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一
个早期版本的Lucene。
直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应
用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass”。
后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能
的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为
一个独立的服务叫做Elasticsearch。
Elasticsearch权威指南(中文版)
是什么 16
第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目
之一,代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支
持一边开发新功能,不过Elasticsearch将永远开源且对所有人可用。
Shay的妻子依旧等待着她的食谱搜索……

 

安装Elasticsearch


理解Elasticsearch最好的方式是去运行它,让我们开始吧!
安装Elasticsearch唯一的要求是安装官方新版的Java,地址:

www.java.com
你可以从 elasticsearch.org\/download 下载最新版本的Elasticsearch。
curl -L -O http://download.elasticsearch.org/PATH/TO/VERSION.zip <1>
unzip elasticsearch-$VERSION.zip
cd elasticsearch-$VERSION
1. 从 elasticsearch.org\/download 获得最新可用的版本号并填入URL中
提示:
在生产环境安装时,除了以上方法,你还可以使用Debian或者RPM安装包,地址在这
里:downloads page,或者也可以使用官方提供的 Puppet module 或者 Chef
cookbook。
安装Marvel
Marvel是Elasticsearch的管理和监控工具,在开发环境下免费使用。它包含了一个叫
做 Sense 的交互式控制台,使用户方便的通过浏览器直接与Elasticsearch进行交互。
Elasticsearch线上文档中的很多示例代码都附带一个 View in Sense 的链接。点击进去,就会
在 Sense 控制台打开相应的实例。安装Marvel不是必须的,但是它可以通过在你本地
Elasticsearch集群中运行示例代码而增加与此书的互动性。
Marvel是一个插件,可在Elasticsearch目录中运行以下命令来下载和安装:
./bin/plugin -i elasticsearch/marvel/latest
你可能想要禁用监控,你可以通过以下命令关闭Marvel:
echo 'marvel.agent.enabled: false' >> ./config/elasticsearch.yml
运行Elasticsearch
Elasticsearch已经准备就绪,执行以下命令可在前台启动:
Elasticsearch权威指南(中文版)
安装 18
./bin/elasticsearch
启动后,如果只有本地可以访问,尝试修改配置文件 elasticsearch.yml
中network.host(注意配置文件格式不是以 # 开头的要空一格, : 后要空一格)
为 network.host: 0.0.0.0
如果想在后台以守护进程模式运行,添加 -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)是一组具有相
同 cluster.name 的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一
个节点也可以组成一个集群。
你最好找一个合适的名字来替代 cluster.name 的默认值,比如你自己的名字,这样可以防止
一个新启动的节点加入到相同网络中的另一个同名的集群中。
你可以通过修改 config/ 目录下的 elasticsearch.yml 文件,然后重启ELasticsearch来做到这
一点。当Elasticsearch在前台运行,可以使用 Ctrl-C 快捷键终止,或者你可以调
用 shutdown API来关闭:
curl -XPOST 'http://localhost:9200/_shutdown'
Elasticsearch权威指南(中文版)
安装 19
查看Marvel和Sense
如果你安装了Marvel(作为管理和监控的工具),就可以在浏览器里通过以下地址访问它:
http:\/\/localhost:9200\/_plugin\/marvel\/
你可以在Marvel中通过点击 dashboards ,在下拉菜单中访问Sense开发者控制台,或者直接
访问以下地址:
http:\/\/localhost:9200\/_plugin\/marvel\/sense\/

你可能感兴趣的:(Elasticsearch,ElastixSearch)