Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。一开始公司里一位同事是直接采用Luncene进行开发的,整体开发下来,代码量大,比较复杂,我就想要寻求一种更好的开发,更好维护的框架,然后发现了elasticsearch。
Elasticsearch的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据
而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。
上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。
Elasticsearch对系统的要求就是安装对应版本的java,elasticsearch2.x要求java1.7+,最新版5.x要求java1.8+
到elasticsearch.org/download选择版本下载,解压即可。
[root@cc ~]# wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.4.0.tar.gz
[root@cc ~]# tar -xvf elasticsearch.tar.gz
解压之后,可以直接通过命令进行启动
./bin/elasticsearch
ps:elasticsearch5.x这边可能会碰到启动不成功的问题,因为5.x开始会有一个jvm的配置文件jvm.options,这边默认jvm内存为4G
之后可以通过浏览器或者在另一个窗口进行测试 :http://localhost:9200/?pretty
如有类似以下返回则说明成功了:
{
"cluster_name": "elasticsearch",
"name": "node-1",
"tagline": "You Know, for Search",
"version": {
"build_hash": "ce9f0c7394dee074091dd1bc4e9469251181fc55",
"build_snapshot": false,
"build_timestamp": "2016-08-29T09:14:17Z",
"lucene_version": "5.5.2",
"number": "2.4.0"
}
}
单纯通过api很不直观,幸好elasticsearch提供了插件的安装,我这边安装elasticsearch-head插件
对于2.x版本可以直接通过以下命令进行安装
./bin/plugin install mobz/elasticsearch-head
然后访问 http://localhost:9200/_plugin...就可以看到类似一下界面
就可以在此界面上进行数据的管理了
对于5.x版本之后,elasticsearch-head则可以需要以一个独立的node项目运行
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
grunt server
然后访问http:// localhost:9100 /就可以了
在这个版本下,需要在elasticsearch.yml中进行配置才能让head进行连接
我这边的配置是这样的:
http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/