ELK-02:Elasticsearch API 和 Head 插件

操作管理 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,后面会单独说明。

原文地址:https://www.cnblogs.com/Dy1an/p/13129670.html