简介
ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例。像Solr4一样,是基于Lucene构建的。支持时间时间索引和全文检索。官网:http://www.elasticsearch.org
它对外提供一系列基于java和http的api,用于索引、检索、修改大多数配置。
学完这篇教程,你就掌握了它的基本操作——启动、运行。
安装ElasticSearch
笔者将以Mac电脑,已安装Java环境开始演示。
下载来自http://www.elasticsearch.org/download/ 的ElasticSearch。
解压缩后,进入到目录,运行
./elasticsearch
这将在本机启动一个ElasticSearch节点
[INFO ][o.e.n.Node ] [] initializing ...
...
[INFO ][o.e.n.Node ] initialized
...
[INFO ][o.e.h.n.Netty4HttpServerTransport] [iJxoy-Y] publish_address {127.0.0.1:9200}, bound_addresses {[fe80::1]:9200}, {[::1]:9200}, {127.0.0.1:9200}
[INFO ][o.e.n.Node ] [iJxoy-Y] started
[INFO ][o.e.g.GatewayService ] [iJxoy-Y] recovered [0] indices into cluster_state
现在在浏览器里测试一下
- Name:我们Elasticsearch实例的名字。在默认情况下,它将从一个巨长的名字列表中随机选择一个。
- Version:这个对象有一个number字段,代表了当前运行的Elasticsearch版本号,和一个Snapshot_build字段,代表了你当前运行的版本是否是从源代码构建而来。
- Tagline:包含了Elasticsearch的第一个tagline: "You Know, for Search."
安装ElasticSearch Head插件
现在让我们从http://mobz.github.io/elasticsearch-head/ 安装ElasticSearch Head插件
下载安装包:
git clone git://github.com/mobz/elasticsearch-head.git
安装node、npm、grunt
node下载地址 nodejs.org/
$ node -v
v6.8.1
npm下载地址 https://www.npmjs.com
$ npm -v
3.10.8
使用npm安装grunt:
npm install –g grunt–cli
npm 安装依赖:
到elasticsearch-head-master目录下,运行命令:
npm install
如果速度较慢或者安装失败,可以使用国内镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
修改Elasticsearch配置文件
编辑elasticsearch/config/elasticsearch.yml,加入以下内容:
http.cors.enabled: true
http.cors.allow-origin: "*"
重启ES服务:
ps -ef | grep elasticsearch
找到对应es的进程kill掉,然后重新运行
./elasticsearch
修改Gruntfile.js
打开elasticsearch-head-master/Gruntfile.js,找到下面connect属性,新增hostname: ‘0.0.0.0’:
connect: {
server: {
options: {
hostname: '0.0.0.0',
port: 9100,
base: '.',
keepalive: true
}
}
}
启动elasticsearch-head
在elasticsearch-head-master/目录下,运行启动命令:
grunt server
后台启动grunt server命令;
nohup grunt server &exit
如果想关闭head插件,使用linux查找进程命令:
ps aux | grep head
结束进程:
kill 进程号
部署应用
我们将要部署一个非常简单的应用:在一个部门里的雇员。
输入:
curl -XPUT 'http://localhost:9200/dept/employee/1?pretty’ -d '{ "empname": "emp1”}’
dept是一个索引并且索引类型是雇员,此时我们正在输入这个索引类型的第1个id。
你应该能在终端看到这样的信息:
{
"_index" : "dept",
"_type" : "employee",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : true
}
和上面的命令一样--让我们输入更多的记录:
curl -XPUT 'http://localhost:9200/dept/employee/2’ -d '{ "empname": "emp2”}’
curl -XPUT 'http://localhost:9200/dept/employee/3’ -d '{ "empname": "emp3”}’
...
...
curl -XPUT 'http://localhost:9200/dept/employee/6’ -d '{ "empname": "emp6”}’
注意:你要记得增加索引计数器和大括号里empname的值。
一旦这些工作都完成了,你为ElasticSearch输入了足够多的数据,你就可以开始使用head插件搜索你的数据了。
访问9100端口:
这里是有关簇使用情况和不同索引信息的概况。我们最近创建的索引在其中,显示为"dept"。
现在点击基本查询
选项卡
在搜索下拉菜单中选择"dept"并点击"搜索"按钮,将显示所有记录:
搜索特定条目
让我们来搜索emp1,emp2和emp5。不断点击最右面的"+"来添加更多的搜索项,就像如图显示的那样,之后点击”搜索”。确保最左边的选项为"should",其他的选项也应该和图中的保持一致
现在你可以继续尝试这个插件了,你可以将其用到你的搜索项目中。