操作管理 ES 方式一:直接 API 操作
ES 提供了 resetful api 接口,意味着大部分操作都可以通过接口直接创建,可以通过 postman,第三方程序调用等方式直接传输数据。
这里的第一种方法就是直接使用 API 接口,利用 Linux 自带的 curl 命令完成。
1. 查看状态接口:
curl -u elastic:123456 -XGET http://192.168.200.101:9200/_cat
结果如下:
截图只是一部分,具体需求再找响应的接口就行。
2. 创建索引,类似创建数据库:
curl -u elastic:123456 -XPUT http://192.168.200.101:9200/test?pretty
后面使用 pretty 的目的是为了输出的 json 数据有格式,否则就是一排显示,影响阅读,这和 MySQL 中把后面的分号换成 G 一个道理。
3. 插入数据:
curl -u elastic:123456 -XPUT 'http://192.168.200.101:9200/test/user/1?pretty' -H 'Content-Type: application/json' -d ' { "username":"zhangsan", "age":"18", "gender":"male" } '
数据将以 Json 格式插入,API 格式:索引(库)/类型(表)/文档(行)
说明:
a. 索引并不是需要事先建立,我们可以直接插数据,如果索引不存在会自己建立。
b. 对同一条数据重复插入,后面的数据会替换掉之前的数据,类似于 MySQL 中的 UPDATE。
c. 如果 API 后面不指定文档 ID,系统将自动生成一个随机的,推荐系统生成,这样不会重复。
4. 查询数据:
curl -u elastic:123456 -XGET 'http://192.168.200.101:9200/test/user/_search?pretty'
查询指定 ID 的数据:
curl -u elastic:123456 -XGET 'http://192.168.200.101:9200/test/user/1?pretty'
按照条件查询:
curl -u elastic:123456 -XGET 'http://192.168.200.101:9200/test/user/_search?q=username:zhangsan&pretty'
5. 删除数据:
curl -u elastic:123456 -XDELETE 'http://192.168.200.101:9200/test/user/1?pretty'
直接使用 DELETE 提交就行。也可以直接删除索引:
curl -u elastic:123456 -XDELETE 'http://192.168.200.101:9200/test?pretty'
到这里可以发现,直接操作非常麻烦,所以也就有了接下来的另外两种方式。
操作管理 ES 方式二:ES Head 插件
head 插件是使用 Nodejs 开发的一个工具,谷歌浏览器有这个插件,直接安装就可以使用,但是国内总所周知的原因,可以选中在服务器上面部署这个服务,然后通过 WEB 访问它。
其作用在于在复杂的接口图形化,功能化,可视化,用户通过界面点点点就能查看和操作。
插件下载地址:
https://github.com/mobz/elasticsearch-head/archive/master.zip
由于服务是 Nodejs 运行的,所以得先安装 Nodejs 环境:
yum -y install nodejs bzip2
为了提升下载速度,npm 建议使用 cnpm:
npm install -g cnpm
下载解压:
# 下载解压 cd /data/packages/ wget https://github.com/mobz/elasticsearch-head/archive/master.zip unzip master.zip mv elasticsearch-head-master/ /data/services/elasticsearch-head # 安装依赖 cd /data/services/elasticsearch-head/ cnpm install
修改配置:Gruntfile.js
hostname: '*',
位置如下:
修改配置:_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.101:9200";
将 localhost 改为 IP 地址:
启动服务:
npm run start &
访问测试:
http://192.168.200.101:9100/?auth_user=elastic&auth_password=123456
由于 ES 设置了密码,所以需要带密码访问。
Head 插件使用说明:
由于之前有建立索引,后面又删除了,可能有数据残余。为了便于测试,先用命令行创建一个索引,并插入数据:
curl -u elastic:123456 -XPOST 'http://192.168.200.101:9200/test/user?pretty' -H 'Content-Type: application/json' -d ' { "username":"zhangsan", "age":18, "gender":"male" } ' curl -u elastic:123456 -XPOST 'http://192.168.200.101:9200/test/user?pretty' -H 'Content-Type: application/json' -d ' { "username":"lisi", "age":25, "gender":"male" } ' curl -u elastic:123456 -XPOST 'http://192.168.200.101:9200/test/user?pretty' -H 'Content-Type: application/json' -d ' { "username":"wangwu", "age":45, "gender":"female" } '
刷新页面:
查看索引数据:
创建索引:
这里会涉及分片:
此时,t1 索引就被分成了5个分片。加粗的黑框代表主分片。
简单的查询:
也可以使用 JSON 就行查询:
这就是简单的使用,至于第三种方式则是 Kibana,后面会单独说明。