es-api


_cat api

通过 GET 请求发送 cat 命名可以列出所有可用的 API:

GET /_cat

=^.^=
/_cat/allocation    查看资源分配情况
/_cat/shards        查所有分片信息
/_cat/shards/{index}查看某个索引分片信息
/_cat/master        查看master节点
/_cat/nodes         查看节点信息
/_cat/tasks
/_cat/indices       查看所有索引信息
/_cat/indices/{index}查看某个索引信息
/_cat/segments      显示碎片中的分段信息
/_cat/segments/{index}显示某个索引中碎片中的分段信息
/_cat/count     显示索引文档数量
/_cat/count/{index}显示某个索引文档数量
/_cat/recovery  显示正在进行和先前完成的索引碎片恢复的视图
/_cat/recovery/{index}显示某个索引正在进行和先前完成的索引碎片恢复的视图
/_cat/health    查看集群健康状况
/_cat/pending_tasks显示正在等待的任务
/_cat/aliases   显示别名、过滤器、路由信息
/_cat/aliases/{alias}显示具体别名、过滤器、路由信息
/_cat/thread_pool   查看线程、队列等使用情况
/_cat/thread_pool/{thread_pools}
/_cat/plugins       显示每个运行插件节点的视图
/_cat/fielddata     查看当前集群各个节点的fielddata内存使用情况
/_cat/fielddata/{fields}查看指定field的内存使用情况,里面传field属性对应的值
/_cat/nodeattrs     显示node节点属性
/_cat/repositories  查看存储库?
/_cat/snapshots/{repository} 查看存储库的快照?
/_cat/templates     查看模板信息
/_cluster/settings  查看集群设置
/_cluster/settings?include_defaults=true  查看集群设置(包括默认设置)

对任意 API 添加 ?help 参数

GET /_cat/nodes?help

id               | id,nodeId               | unique node id
pid              | p                       | process id
host             | h                       | host name
ip               | i                       | ip address
port             | po                      | bound transport port
version          | v                       | es version
build            | b                       | es build hash
jdk              | j                       | jdk version
disk.avail       | d,disk,diskAvail        | available disk space
heap.percent     | hp,heapPercent          | used heap ratio
heap.max         | hm,heapMax              | max configured heap
ram.percent      | rp,ramPercent           | used machine memory ratio
ram.max          | rm,ramMax               | total machine memory
load             | l                       | most recent load avg
uptime           | u                       | node uptime
node.role        | r,role,dc,nodeRole      | d:data node, c:client node
master           | m                       | m:master-eligible, *:current master

用 ?h 参数来明确指定显示这些指标:

GET /_cat/nodes?v&h=ip,port,heapPercent,heapMax

ip            port heapPercent heapMax
192.168.1.131 9300          53 990.7mb

查看节点信息

GET /_cat/nodes?v

查看资源分配情况

GET /_cat/allocation?v

查看当前线程组状态

GET /_nodes/stats?pretty

查看线程、队列等使用情况

GET _cat/thread_pool?v

查看集群设置

GET /_cluster/settings

查看所有设置

GET /_all/_settings

查看集群健康状态

GET /_cluster/health

查看License

GET /_license

查看集群状态

GET /_cluster/state

查看ES连接数

netstat -anp | grep ESTABLISHED | grep 9200 | gawk '{print $5}' | gawk -F':' '{print $4}' | sort -rn | uniq -c | sort -rn

参数修改

设置延迟分配,修改分片延时

PUT /_all/_settings
{
  "settings":{
    "index.unassigned.node_left.delayed_timeout":"5m"
  }
}

同步刷新

POST _flush/synced

自动均衡开关

关闭
PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.allocation.enable" : "none"
    }
}
打开
PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.allocation.enable" : "all"
    }
}

修改集群自动发现

PUT /_cluster/settings
{
    "transient": {
        "discovery.zen.minimum_master_nodes" : 2
    }
}

调整分片使其主分片和副分片分布在不同的主机上

PUT /_cluster/settings
{
 "persistent": {
        "cluster.routing.allocation.same_shard.host": "on"
 }
}

PUT /_cluster/settings
{
 "transient": {
        "cluster.routing.allocation.same_shard.host": "on"
 }
}

查看索引模板

GET /_template

查询具体某个模板

GET /_template/test

修改更新间隔

PUT /_template/template_1
{
    "template" : "my-index*",
    "order" : 0,
    "settings" : {
        "index": {
        "refresh_interval": "300s"
        }
    }
}

创建索引模板
PUT _template/feature_template

PUT _template/template_1

{
  "index_patterns": "test*",
  "settings": {
    "number_of_replicas": 0,
    "refresh_interval": "30s"
  }
}

删除索引模板

DELETE /_template/template_1

查看修改单个索引刷新间隔

GET /my-index/_settings
/_settings

PUT /my-index_2018-06-15/_settings
{
  "settings": {
     "index": {
        "refresh_interval": "60s"
      }
   }
}

查看所有node:

GET /_cat/nodes?v

查看所有索引:

GET /_cat/indices?v

修改索引副本数量为0

PUT /my-index/_settings
{
  "index": {
        "number_of_replicas": "1"
        }
}

各个分片、索引的fielddata在内存中的占用情况

GET /_stats/fielddata?fields=*

每个node的fielddata在内存中的占用情况

GET /_nodes/stats/indices/fielddata?fields=*

每个node中的每个索引的fielddata在内存中的占用情况

GET /_nodes/stats/indices/fielddata?level=indices&fields=*

剩余磁盘空间达到es最小值,添加数据被block

PUT _all/_settings
{"index.blocks.read_only_allow_delete": null}

es出现cluster_block_exception报错及解决

curl -XPUT -H "Content-Type: application/json" http://es-url:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

PUT _cluster/settings
{
"index.blocks.read_only_allow_delete": null
}


cluster.routing.allocation.disk.watermark.low: 默认 85% 当达到时,replica 不再写入
cluster.routing.allocation.disk.watermark.high: 默认 90% 当达到时,shards 会尝试写入其他节点
cluster.routing.allocation.disk.watermark.flood_stage: 默认 95% 当达到时,所有索引变为 readonly状态
header 1 header 2
row 1 col 1 row 1 col 2
row 2 col 1 row 2 col 2

运维命令概览

集群

命令 说明
GET /_cat/health?v 查看集群的健康状态。集群状态包括green、red、yellow,各状态的具体说明请参见查看集群健康状态。
GET /_cluster/health?pretty=true 查看集群的健康状态。pretty=true表示格式化输出。您也可以添加其他查询参数,例如:
level=indices: 显示索引状态。
level=shards: 显示分片信息。
GET /_cluster/stats 查看集群的系统信息。包括CPU、JVM等信息。
GET /_cluster/state 查看集群的详细信息。包括节点、分片等信息。
GET /_cluster/pending_tasks 查看集群中堆积的任务。
GET /_cluster/settings 查看集群设置。
POST _cache/clear 缓存清理

调整索引监控日志保留时间(.monitoring-es-6-*)

PUT _cluster/settings {"persistent": {"xpack.monitoring.history.duration":"0d"}}

设置需要采集的监控索引

PUT _cluster/settings {"persistent": {"xpack.monitoring.collection.indices":  "*,-.*" } }

节点

命令 说明
GET /_cat/master?v 查看集群中Master节点的信息。
GET /_cat/nodes?v 查看集群中各个节点的当前状态。包括节点CPU使用率、HeapMemory使用率、负载情况等。
GET /_cat/nodeattrs?v 查看单节点的自定义属性。
GET /_nodes/stats?pretty=true 查看节点状态。
GET /_nodes/process 查看节点的进程信息。
GET /_nodes/hot_threads 查看高消耗的线程所执行的任务。
GET /_nodes//jvm,process,os 查看指定节点的JVM、进程和操作系统信息。
GET _cat/plugins?v 查看各节点的插件信息。
GET /_cat/thread_pool?v 查看各节点的线程池统计信息。包括线程池的类型、活跃线程数、任务队列大小等。

index

命令 说明
GET _cat/indices 列出所有索引
POST /my_index/_open 打开索引
POST /my_index/_close 关闭索引

创建新的索引(Index)并设置分片数

PUT /<indexName>
{
  "settings": {
    "index": {
      "number_of_shards": 5,
      "number_of_replicas": 1
    }
  }
}

设置索引index慢日志

PUT /my_index/_settings
{
    "index.search.slowlog.threshold.query.warn" : "10s",
    "index.search.slowlog.threshold.fetch.debug": "500ms",
    "index.indexing.slowlog.threshold.index.info": "5s"
}

设置所有的索引的index慢日志时间

PUT  _settings
{
        "index.indexing.slowlog.threshold.index.debug" : "0ms",
        "index.indexing.slowlog.threshold.index.info" : "0ms",
        "index.indexing.slowlog.threshold.index.trace" : "0ms",
        "index.indexing.slowlog.threshold.index.warn" : "0ms"
}

设置慢查询fetch

PUT _settings
{
    "index.search.slowlog.threshold.fetch.warn":"1s",
    "index.search.slowlog.threshold.fetch.info":"800ms",
    "index.search.slowlog.threshold.fetch.debug":"500ms",
    "index.search.slowlog.threshold.fetch.trace":"200ms"
}

设置慢查询query

PUT _settings
{
     "index.search.slowlog.threshold.query.warn":"5s",
    "index.search.slowlog.threshold.query.info":"2s",
    "index.search.slowlog.threshold.query.debug":"1s",
    "index.search.slowlog.threshold.query.trace":"400ms"
}

分片

命令 说明
GET /_cat/shards?v 查看集群中各分片的详细情况。包括索引名称、分片编号、是主分片还是副分片、分片的当前状态(对于分配失败的分片会有失败原因)、doc数量、磁盘占用情况等。您也可以指定index,查看该index的分片信息(GET _cat/shards/?v)。
GET /_cat/allocation?v 查看集群中每个节点的分片分配情况。
GET /_cat/recovery?v 查看集群中每个分片的恢复过程。

设置my-index的分片副本数为2

curl -XPUT 'http://localhost:9200/my-index/_settings' -d '{

   "number_of_replicas" : 2

}'
PUT /my-index*/_settings
{
  "index": {
        "number_of_replicas": "0"
        }
}

集群则会在一段时间内不做分配

在宕机节点重启后,由宕机节点本机磁盘数据进行恢复,在大型集群调优中,能提到数倍的恢复差异。

PUT /all/settings
{
  "settings": {
    "index.unassigned.node_left.delayed_timeout":"5m"
  }
}

设置集群所有的分片自动均衡

PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.allocation.enable":"all"
    }
}

设置my-index 分片不自动均衡

curl -XPUT 'http://168.7.1.67:9200/my-index/_settings' -d '{

   "cluster.routing.allocation.disable_allocation":true

}'

手动移动分片

curl -XPOST "http://168.7.1.67:9200/_cluster/reroute' -d  '{
   "commands" : [{
		"move" : {
			"index" : "my-index",
			"shard" : 0,
			"from_node" : "es-0",
			"to_node" : "es-3"
		}
	}]
}'

手动分配分片

curl -XPOST "http://168.7.1.67:9200/_cluster/reroute' -d  '{
   "commands" : [{
		"allocate" : {
			"index" : "my-index",
			"shard" : 0,
			"node" : "es-2",
		}
	}]
}'

Segments

命令 说明
GET /_cat/segments?v 查看集群中各索引的segment信息。包括segment名称、所属shard、内存或磁盘占用大小、是否刷盘等。您也可以指定index,查看该index的segment信息(GET _cat/segment/?v)。

Mapping

命令 说明
GET /_cat/indices?v 查看集群中所有索引的详细信息。包括索引的健康度、状态、分片数和副本数、包含的文档数等。您也可以查看指定索引的信息(GET _cat/indices/?v)。
GET /_cat/aliases?v 查看集群中所有aliases(索引别名)的信息。包括aliases对应的索引、路由配置等。

文档

命令 说明
GET /_cat/count?v 查看集群中的文档数量。您也可以指定index,查看该index的文档数量(GET _cat/count/?v)。
GET /// 查看文档中的数据。

快照

命令 说明
GET _snapshot/_all      查看所有快照。
GET _snapshot//_status 查看指定快照的进度。
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出

reindex

reindex你可以简单理解为scroll+bulkinsert,ES不会帮你复制source的mapping、settings,只会按默认设置自动做映射,建议是先建好新的索引再做reindex

1、新index不创建mapping,则老数据进入新index时会由es自动生成对应mapping,不建议这样

2、新index和老index的mapping对应,则可以正常导过去数据

POST
{
  "source": {
    "index": "old_index",
	"size":1000   //可选,每次批量提交1000个,可以提高效率,建议每次提交5-15M的数据
	"query": {
      "match": {
        "CreateBy": "xxx"
      }
    }
  },
  "dest": {
    "index": "new_index"
  }
}

settings和mappings的意义

  settings是修改分片和副本数的。

  mappings是修改字段和类型的。类似于mysql中的表结构信息