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、进程和操作系统信息。 |
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/ |
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/ |
Mapping
命令 | 说明 |
---|---|
GET /_cat/indices?v | 查看集群中所有索引的详细信息。包括索引的健康度、状态、分片数和副本数、包含的文档数等。您也可以查看指定索引的信息(GET _cat/indices/ |
GET /_cat/aliases?v | 查看集群中所有aliases(索引别名)的信息。包括aliases对应的索引、路由配置等。 |
文档
命令 | 说明 |
---|---|
GET /_cat/count?v | 查看集群中的文档数量。您也可以指定index,查看该index的文档数量(GET _cat/count/ |
GET / |
查看文档中的数据。 |
快照
命令 | 说明 |
---|---|
GET _snapshot/_all | 查看所有快照。 |
GET _snapshot/ |
查看指定快照的进度。 |
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /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中的表结构信息