声明:本系列(标题含有一,二....)的文章都基于https://es.xiaoleilu.com/010_Intro/25_Tutorial_Indexing.html
ES是什么
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的高级特性,这一切都是可配置的,并且配置非常灵活。
安装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已经准备就绪,执行以下命令可在前台启动:
./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'
查看Marvel和Sense
如果你安装了Marvel(作为管理和监控的工具),就可以在浏览器里通过以下地址访问它:
http://localhost:9200/_plugin/marvel/
你可以在Marvel中通过点击dashboards,在下拉菜单中访问Sense开发者控制台,或者直接访问以下地址:
http://localhost:9200/_plugin/marvel/sense/