Elasticsearch(5)--- 基本命令

说明:该博客对于的Elasticsearch 的版本为7.3。

这篇博客的命令分为ES集群相关命令索引CRUD命令文档CRUD命令。这里不包括Query查询命令,它单独写一篇博客。

一、ES集群相关命令

ES集群相关命令主要是_cat命令,所以这里详细讲解下该命令。

1、_cat命令

_cat系列提供了一系列查询Elasticsearch集群状态的接口。

/_cat/allocation      #查看单节点的shard分配整体情况
/_cat/shards #查看各shard的详细情况
/_cat/shards/{index} #查看指定分片的详细情况
/_cat/master #查看master节点信息
/_cat/nodes #查看所有节点信息
/_cat/indices #查看集群中所有index的详细信息
/_cat/indices/{index} #查看集群中指定index的详细信息
/_cat/segments #查看各index的segment详细信息,包括segment名, 所属shard, 内存(磁盘)占用大小, 是否刷盘
/_cat/segments/{index}#查看指定index的segment详细信息
/_cat/count #查看当前集群的doc数量
/_cat/count/{index} #查看指定索引的doc数量
/_cat/recovery #查看集群内每个shard的recovery过程.调整replica。
/_cat/recovery/{index}#查看指定索引shard的recovery过程
/_cat/health #查看集群当前状态:红、黄、绿
/_cat/pending_tasks #查看当前集群的pending task
/_cat/aliases #查看集群中所有alias信息,路由配置等
/_cat/aliases/{alias} #查看指定索引的alias信息
/_cat/thread_pool #查看集群各节点内部不同类型的threadpool的统计信息,
/_cat/plugins #查看集群各个节点上的plugin信息
/_cat/fielddata #查看当前集群各个节点的fielddata内存使用情况
/_cat/fielddata/{fields} #查看指定field的内存使用情况,里面传field属性对应的值
/_cat/nodeattrs #查看单节点的自定义属性
/_cat/repositories #输出集群中注册快照存储库
/_cat/templates #输出当前正在存在的模板信息

每个命令都支持使用?v参数,让输出内容表格显示表头; pretty则让输出缩进更规范

2、示例

1) 节点信息

curl -X GET "localhost:9200/_cat/nodes?v&pretty"
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.18.0.4 52 97 6 0.02 0.11 0.28 mdi - es7_02
172.18.0.5 57 97 6 0.02 0.11 0.28 mdi * es7_01
  1. heap.percent 堆内存占用百分比
  2. ram.percent 内存占用百分比
  3. cpu CPU占用百分比
  4. master *表示节点是集群中的主节点
  5. name 节点名

2) 分片信息

curl -X GET "localhost:9200/_cat/shards?v&pretty"
index shard prirep state docs store ip node
.monitoring-es-7-2019.08.30 0 p STARTED 21333 11.8mb 172.18.0.5 es7_01
.monitoring-es-7-2019.08.30 0 r STARTED 21333 11.8mb 172.18.0.4 es7_02
goods-index 0 p STARTED 1 2.5mb 172.18.0.5 es7_01
goods-index 0 r STARTED 1 2.5mb 172.18.0.4 es7_02
.kibana_1 0 p STARTED 4 22.4kb 172.18.0.5 es7_01
.kibana_1 0 r STARTED 4 22.4kb 172.18.0.4 es7_02
  1. index 索引名称
  2. shard 分片序号
  3. prirep p表示该分片是主分片, r 表示该分片是复制分片
  4. store 该分片占用存储空间
  5. node 所属节点节点名
  6. docs 分片存放的文档

3) 索引信息

curl -X GET "localhost:9200/_cat/indices?v"
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open goods-index NhqSRJWUQiu46tdOKol4wA 1 1 1 7018 5mb 2.5mb
green open .monitoring-es-7-2019.08.30 lVDNFDVdSXqqrn8CdI_XGg 1 1 21333 18920 23.6mb 11.8mb
green open .kibana_1 rvSlNVjJTsus80klzU19jQ 1 1 4 1 44.9kb 22.4kb
  1. health 索引的健康状态
  2. index 索引名
  3. pri 索引主分片数量
  4. rep 索引复制分片
  5. store.size 索引主分片 复制分片 总占用存储空间
  6. pri.store.size 索引总占用空间, 不计算复制分片 占用空间

二、索引CRUD命令

1、查询索引

查询索引命令上面已经展示过了,这里再补充一些

条件过滤

_cat/indices?v&health=yellow   #查询健康状态为yellow的索引

排序

_cat/indices?v&health=yellow&s=docs.count:desc #根据文档数量进行索引排序

索引详细信息

curl -X GET "localhost:9200/my_index/_stats?pretty" #索引详细信息

2、创建索引

PUT /student
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"name": {
"type":"text"
},
"country": {
"type":"keyword"
},
"age": {
"type":"integer"
},
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}

创建成功

3、删除索引

curl -X DELETE "localhost:9200/index-name"

三、文档CRUD命令

在讲文档的CRUD之前我们要先理解 GET/PUT/POST/DELETE

POST /uri        #创建
DELETE /uri/xxx #删除
PUT /uri/xxx #更新或创建
GET /uri/xxx #查看

思考POST和PUT的区别

1)在ES中,如果不确定文档的ID,那么就需要用POST,它可以自己生成唯一的文档ID。如果确定文档的ID,那么就可以用PUT,当然也可以用POST,它们都可以创建或修改文档(如果是修改,那么_version版本号提高1)

2)PUT、GET、DELETE是幂等的,而POST并不一定是幂等。如果你对POST也指定了文档ID,那它其实和PUT没啥区别,那它就是幂等。如果你没有指定文档ID那么就不是幂等操作了,因为同一数据,你执行多次POST,那么生成多个UUID的文档,

也就是每POST一次都会新增一条数据。

1、创建文档

1)PUT方式创建

PUT  /student/_doc/1
{
"name": "徐小小",
"country": "杭州",
"age": "3",
"date": "2019-09-04"
}

运行结果

2)POST方式创建

POST不指定主键

POST  /student/_doc
{
"name": "徐小小",
"country": "杭州",
"age": "3",
"date": "2019-09-04"
}

运行结果

POST指定主键ID

POST  /student/_doc/88
{
"name": "徐小小",
"country": "杭州",
"age": "3",
"date": "2019-09-04"
}

运行结果

可以明显看出,POST也可以指定文档ID,如果指定文档ID,那么就和PUT没有区别。ID不存在则创建,存在则更新并且_version版本+1.

2、文档查看

GET  /student/_doc/1

如图

3、文档更新

商品PUT和POST执行的时候,如果指定的文档ID存在,那么就可以执行更新操作。不过它们执行的是全量更新,如果需要单独对某字段更新我们可以使用关键字_update

例如

POST /student/_update/1
{
"doc" : {
"age": 5
}
}

如图,发现age已经更新成功

4、文档删除

语法

DELETE /{index}/{type}/{id}

参考

1、Elasticsearch核心技术与实战---阮一鸣(eBay Pronto平台技术负责人

2、ElasticSearch常用命令

3、Elasticsearch 状态查询Cat接口

4、文档操作基本命令

5、ElasticSearch批量操作相关命令

 我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(9)

Elasticsearch(5)--- 基本命令(集群相关命令、索引CRUD命令、文档CRUD命令)的更多相关文章

  1. 【原创】《从0开始学Elasticsearch》—集群健康和索引管理

    内容目录 1.搭建Kibana2.集群健康3.索引操作 1.搭建Kibana 正如<Kibana 用户手册>中所介绍,Kibana 是一款开源的数据分析和可视化平台,因此我们可以借助 Ki ...

  2. 原创 | 手摸手带您学会 Elasticsearch 单机、集群、插件安装(图文教程)

    欢迎关注笔者的公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site/ ...

  3. 全文搜索引擎 Elasticsearch 入门:集群搭建

    本文主要介绍什么是 ElasticSearch 以及为什么需要它,如何在本机安装部署 ElasticSearch 实例,同时会演示安装 ElasticSearch 插件,以及如何在本地部署多实例集群, ...

  4. elasticsearch如何设计集群

    本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 在写本文时就在想,如果让你负责一个elasticsearch集群,从零开始,你会从哪些方面 ...

  5. Elasticsearch 教程--分布式集群

    集群 补充章节 正如前文提到的,这就是第个补充的章节,这里会介绍 Elasticsearch 如何在分布式环境中运行. 本章解释了常用术语,比如 集群 (cluster), 节点 (node) 以及  ...

  6. ElasticSearch之二——集群

    ElasticSearch 集群 首先看下ElasticSearch(ES)的架构: 术语解释: cluster:代表一个集群,集群中有多个节点,其中有一个master节点,master通过选举自动产 ...

  7. Redis原理及集群相关知识

    读书笔记 <Redis开发与运维 > Redis使用场景 作为缓存层 减少对Mysql的压力 计数功能 比如使用原子命令incr 共享Session 设置过期时间 可以限制短信接口等调用 ...

  8. ElasticSearch 获取es集群信息

    参考博客:https://www.cnblogs.com/phpshen/p/8668833.html es集群信息有些版本下如果证书过期就会查不到,有些版本貌似不需要,提供一个据说不需要证书的版本的 ...

  9. 使用Spring Data ElasticSearch+Jsoup操作集群数据存储

    使用Spring Data ElasticSearch+Jsoup操作集群数据存储 1.使用Jsoup爬取京东商城的商品数据 1)获取商品名称.价格以及商品地址,并封装为一个Product对象,代码截 ...

随机推荐

  1. Atlassian In Action-Jira之二次开发(五)

    到现在已经写到了第五章节,实际上离Jira的官方系统已经越来越远,本章节的内容基本上已经完全脱离了Jira这个系统本身,而是依赖Jira的API接口和数据库进行开发了.主要包含如下几个功能: 人员任务 ...

  2. .Net集合详解

    前言 前面几篇文章讲了泛型.讲了数组,都有提到集合,这一节重点对集合进行详细解说.本文主要使用各种集合类型.以至于评估其性能,针对不同的场景选择不同的集合使用. 集合分类详解 一.列表 列表的创建 v ...

  3. 使用ForkJoinPool来多线程的拆分任务,执行任务,合并结果。

    ForkJoinPool 是jdk1.7 由Doug Lea 写的实现   递归调用任务拆分,合并,的线程池. 代码示例: package www.itbac.com; import com.alib ...

  4. S2:log4j

    配置步骤 1.引入jar,放到lib中,jar包被项目管理 2.在src目录下copy了一个文件log4j.properties 3.使用Logger   String word="会员登记 ...

  5. 洛谷P2125 题解

    吐槽: 只能说这道题很数学,本数学蒟蒻推了半天没推出来,只知道要用绝对值,幸亏教练提醒,才勉强想出正解(似乎不是这样的),真的是很无语. 以上皆为吐槽本题,可直接 跳过 分析: 既然题目是要使书架上的 ...

  6. 【POJ - 2236】Wireless Network (并查集)

    Wireless Network 这接翻译了 Descriptions 地震发生在东南亚.ACM(亚洲合作医疗团队)已经与膝上电脑建立了无线网络,但是一次意外的余震袭击,网络中的所有计算机都被打破了. ...

  7. springboot-jsp打jar问题

    [**前情提要**]最近做了一个项目,项目是springboot+jsp结构的,但是在发布生产环境的时候又需要用maven打成jar包,但是一开始的默认配置都不成功.下面的文章就是具体的解决过程. - ...

  8. Go中的并发编程和goroutine

    并发编程对于任何语言来说都不是一件简单的事情.Go在设计之初主打高并发,为使用者提供了goroutine,使用的方式虽然简单,但是用好却不是那么容易,我们一起来学习Go中的并发编程. 1. 并行和并发 ...

  9. 使用Typora编写博客并发布

    前言 用CSDN写了一段时间,广告漫天飞舞.... 于是在博客园申请了一个账号,然后看见markdown编辑页面的第一眼: 再见^_^ 搜索一波,凭着博客园强大的生态,30多万的用户,第三方的支持应接 ...

  10. Docker 核心技术

    docker是什么?为什么会出现? 容器虚拟化技术:轻量级的虚拟机(但不是虚拟机) 开发:提交代码 ——> 运维:部署 在这中间,因为环境和配置,出现问题 ——> 把代码/配置/系统/数据 ...