Elasticsearch集群管理

ES通过设置【节点的名字】和【集群的名字】,就能自动的组织相同集群名字的节点加入到集群中,并使很多的技术对用户透明化。 如果用户想要管理查看集群的状态,可以通过一些REST API来实现。 其他的ES文档翻译参考:Elasticsearch文档总结

REST API用途

ES提供了很多全面的API,大致可以分成如下几种:

1 检查集群、节点、索引的健康情况

2 管理集群、节点,索引数据、元数据

3 执行CRUD,创建、读取、更新、删除 以及 查询

4 执行高级的查询操作,比如分页、排序、脚本、聚合等

查看集群状态

可以通过CURL命令发送REST命令,查询集群的健康状态:

curl 'localhost:9200/_cat/health?v'

Localhost是主机的地址,9200是监听的端口号,ES默认监听的端口号就是9200.

这里需要注意的是,windows下安装的CURL有可能不支持单引号,如果有报错,还请改成双引号,内部使用转义字符转义。

得到的相应结果:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign
1394735289 14:28:09  elasticsearch green           1         1      0   0    0    0        0

可以看到集群的名字是默认的"elasticsearch",集群的状态时"green"。这个颜色之前也有说过:

1 绿色,最健康的状态,代表所有的分片包括备份都可用

2 黄色,基本的分片可用,但是备份不可用(也可能是没有备份)

3 红色,部分的分片可用,表明分片有一部分损坏。此时执行查询部分数据仍然可以查到,遇到这种情况,还是赶快解决比较好。

上面的结果还可以看到,目前有一个节点,但是没有分片,这是因为我们的ES中还没有数据,一次也就没有分片。

当使用elasticsearch作为集群名字时,会使用单播,查询本机上是否还运行着其他的节点。如果有,则组成一个集群。

(如果使用其他的名字作为集群名字,那么就可能采用多播了!这个在工作中,经常会遇到,大家使用的是一个集群名字,分片总是被搞在一起,导致有人的机器下线后,自己的也无法使用)

通过下面的命令,可以查询节点的列表:

curl 'localhost:9200/_cat/nodes?v'

得到的结果如下:

curl 'localhost:9200/_cat/nodes?v'
host         ip        heap.percent ram.percent load node.role master name
mwubuntu1    127.0.1.1            8           4 0.00 d         *      New Goblin

查看所有的索引

在ES中索引有两个意思:

1 动词的索引,表示把数据存储到ES中,提供搜索的过程;这期间可能正在执行一个创建搜索的过程。

2 名字的索引,它是ES中的一个存储类型,与数据库类似,内部包含type字段,type中包含各种文档。

通过下面的命令可以查看所有的索引:

curl 'localhost:9200/_cat/indices?v'

得到的结果如下:

curl 'localhost:9200/_cat/indices?v'
health index pri rep docs.count docs.deleted store.size pri.store.size

由于集群中没有任何的数据,上面的结果中也就只包含列的信息了。

创建索引

下面是创建索引,以及查询索引的例子:

curl -XPUT 'localhost:9200/customer?pretty'
{
  "acknowledged" : true
}

curl 'localhost:9200/_cat/indices?v'
health index    pri rep docs.count docs.deleted store.size pri.store.size
yellow customer   5   1          0            0       495b           495b

上面的结果中,customer索引的状态是yellow,这是因为此时虽然有5个主分片和一个备份。但是由于只是单个节点,我们的分片还在运行中,无法动态的修改。因此当有其他的节点加入到集群中,备份的节点会被拷贝到另一个节点中,状态就会变成green。

索引和搜索文档

之前说过,索引里面还有类型的概念,在索引文档之前要先设置类型type。

执行的命令如下:

curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
  "name": "John Doe"
}'

执行成功后会得到如下的信息:

{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "created" : true
}

注意2.0版本的ES在同一索引下,不同的类型,相同的字段名字,是不允许字段类型不一致的。

上面的例子中,为我们创建了一个文档,并且id自动设置为1.

ES不需要再索引文档前,不需要明确的创建索引,如果执行上面的命令,索引不存在,也会自动的创建索引。

执行下面的命令查询,返回信息也如下:

curl -XGET 'localhost:9200/customer/external/1?pretty'
{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "found" : true, "_source" : { "name": "John Doe" }
}

这里会新增两个字段:

1 found 描述了请求信息

2 _source 为之前索引时的数据

删除索引

执行下面的命令就可以删除索引:

curl -XDELETE 'localhost:9200/customer?pretty'

返回结果:

{
    "acknowledged": true
}

总结

总结上面涉及到的命令大致如下:

curl -XPUT 'localhost:9200/customer'//创建索引
//插入数据
curl -XPUT 'localhost:9200/customer/external/1'-d '
{
  "name": "John Doe"
}'
curl 'localhost:9200/customer/external/1'//查询数据
curl -XDELETE 'localhost:9200/customer'//删除索引

参考

1【Elasticsearch官方文档】:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

DNS隧道技术解析

在之前穿越边界的姿势文章中介绍了几种穿透内网的方式,今天的这种方式再之前的文章里没有提及,所以今天来重点介绍使用dns协议穿透内网。

35200
来自专栏finleyMa

docker学习系列13 实现 基于pxc 的mysql 多节点主主同步

MySQL本身是开源的,有些公司或社区基于MySQL发布了新的分支,如有名的MariaDB。 在介绍 Percona 之前,首要要介绍的是XtraDB存储引擎...

33350
来自专栏漏斗社区

工具| WebGoat源码审计之SQL注入篇

53870
来自专栏黑泽君的专栏

day73_淘淘商城项目_06_solr索引库搭建 + solr搜索功能实现 + 图片显示等问题解决_匠心笔记

  solr是java开发的。   solr的安装文件。   推荐在Linux环境下使用Solr,需要安装环境Linux。   需要安装jdk。参考链接:htt...

48630
来自专栏皮振伟的专栏

[linux][x86]LOCK指令的影响

前言: 一般多线程并行操作,对个别的变量需要使用原子操作,经常用到__sync_fetch_and_add类似的函数,来避免CPU操作各自的cache没有同步内...

27440
来自专栏程序员的SOD蜜

在数据库上实现类似铁路售票锁票功能

要实现铁路售票那样的效果,如果有票查询到就锁定票,如果客人不购买再将票放回票池,这样可以保证前来买票的旅客只要查询到有票就一定能够买到票。我们可以通过给数据库增...

31160
来自专栏Laoqi's Linux运维专列

MySQL性能调优my.cnf详解

MySQL 5.6版本适合在1GB内存VPS上的my.cnf配置文件 [client] port = 3306 socket = /tmp/mysql....

56860
来自专栏一枝花算不算浪漫

Redis的介绍及使用实例.

38690
来自专栏Eternally运维

Mysql配置文件的理解

43840
来自专栏小樱的经验随笔

sqlmap简单中文说明

首先下载需要的文件,如果是windows环境直接到http://sqlmap.org/下载安装所需要的文件即可。 更新 svn checkout https:...

33070

扫码关注云+社区

领取腾讯云代金券