Es初步检索命令

news2024/12/25 15:06:49

1、_cat

GET /_cat/nodes:查看所有节点

请求 :

http://192.168.107.129:9200/_cat/nodes

响应 :

 127.0.0.1 15 95 8 0.19 0.16 0.24 dilm * 32bb46713f1b

GET /_cat/health:查看 es 健康状况 

请求 :

http://192.168.107.129:9200/_cat/nodes

响应  :

1672289253 04:47:33 elasticsearch green 1 1 3 3 0 0 0 0 - 100.0%

GET /_cat/master:查看主节点

请求 :

http://192.168.107.129:9200/_cat/master

响应  :

0UIKX1bRRBWnz03krbYtXw 127.0.0.1 127.0.0.1 32bb46713f1b

GET /_cat/indices:查看所有索引 (show databases)

请求 :

http://192.168.107.129:9200/_cat/masterhttp://192.168.107.129:9200/_cat/indiceshttp://192.168.107.129:9200/_cat/master

响应  :

green open .kibana_task_manager_1   zrlBv8ZPRrelVQk8Ha-4GQ 1 0 2 0 38.3kb 38.3kb
green open .apm-agent-configuration isnuogXsRt-nDUuNNoRp9A 1 0 0 0   283b   283b
green open .kibana_1                ITqnjQoXRse1VhpieOA6oQ 1 0 2 0 11.3kb 11.3kb

 2、索引一个文档(保存)

发送put请求 

保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识

PUT customer/external/1;在 customer 索引下的 external 类型下保存 1 号数据为

PUT customer/external/1 

 请求:

http://192.168.107.129:9200/customer/external/1

jsion数据:

{ 
    "name": "John Doe"
}

 响应

{
    "_index": "customer",//在哪个索引下
    "_type": "external",//在哪个type下
    "_id": "1",//id
    "_version": 1,//版本
    "result": "created",//结果新建
    "_shards": {//分片
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

再一次这个发送请求 

响应:

{
    "_index": "customer",
    "_type": "external",
    "_id": "1 ",
    "_version": 2,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 3,
    "_primary_term": 5
}

这个时候可以发现是更新操作。发送多次为更新

注意:再一次发送这个请求的时候如果发现出现的响如果为

{
    "error": {
        "root_cause": [
            {
                "type": "cluster_block_exception",
                "reason": "index [customer] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
            }
        ],
        "type": "cluster_block_exception",
        "reason": "index [customer] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
    },
    "status": 403
}

这个错的意思呢,就是你的索引库为只读状态。

解决方法:

配置文件后加上这句:

cluster.routing.allocation.disk.threshold_enabled: false

执行完了之后需要重启ES。

接下来,我们把只读状态改了:

使用PUT提交:http://127.0.0.1:9200/索引名称/_settings

{
"index.blocks.read_only_allow_delete": null
}

或者将其指定为false。自己根据自己需要来。

发送post请求时 

这个时候不带id时

 响应

{
    "_index": "customer",
    "_type": "external",
    "_id": "5SfpXIUB7T24Ga4R2BS6",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 4,
    "_primary_term": 5
}

 "_id": "5SfpXIUB7T24Ga4R2BS6":返回一个随机的id

 再一次发送不带id的post请求

 响应

{
    "_index": "customer",
    "_type": "external",
    "_id": "5ifrXIUB7T24Ga4RnBSe",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 5,
    "_primary_term": 5
}

我们可以发现这个时候也是新增,返回了一个随机的id

 但是如果带了id发送post请求那么效果跟put请求的效果是一样的

总结

 PUT 和 POST 都可以,

POST 新增。如果不指定 id,会自动生成 id。指定 id 就会修改这个数据,并新增版本号

PUT 可以新增可以修改。PUT 必须指定 id;由于 PUT 需要指定 id,我们一般都用来做修改 操作,不指定 id 会报错。

 3、查询文档

GET customer/external/1

http://192.168.107.129:9200/customer/external/1

响应

{
"_index": "customer", //在哪个索引
"_type": "external",	//在哪个类型
"_id": "1",	//记录 id
"_version": 2,	//版本号
"_seq_no": 1,	//并发控制字段,每次更新就会+1,用来做乐观锁
"_primary_term": 1,	//同上,主分片重新分配,如重启,就会变化"found": true,
"_source": {	//真正的内容
"name": "John Doe"
            }
}

更新携带 ?if_seq_no=0&if_primary_term=1 

if_seq_no=0乐观锁的版本号,当不符合版本号的时候报409

{
    "error": {
        "root_cause": [
            {
                "type": "version_conflict_engine_exception",
                "reason": "[1]: version conflict, required seqNo [6], primary term [5]. current document has seqNo [7] and primary term [5]",
                "index_uuid": "Bdd3svLfS9ioGHqqBnxzdQ",
                "shard": "0",
                "index": "customer"
            }
        ],
        "type": "version_conflict_engine_exception",
        "reason": "[1]: version conflict, required seqNo [6], primary term [5]. current document has seqNo [7] and primary term [5]",
        "index_uuid": "Bdd3svLfS9ioGHqqBnxzdQ",
        "shard": "0",
        "index": "customer"
    },
    "status": 409
}

4、更新文档 

带_update或put更新的post请求

POST customer/external/1/_update

{
     "doc":{ 
             "name": "John123"
          }
}

 

响应 :

{
    "_index": "customer",
    "_type": "external",
    "_id": "1",
    "_version": 5,
    "result": "updated",//注意这个地方是updated的更新
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 8,
    "_primary_term": 5
}

json内容不变再一次发送响应:

{
    "_index": "customer",
    "_type": "external",
    "_id": "1",
    "_version": 7,
    "result": "noop",//再一次发送的时候不是更新了
    "_shards": {
        "total": 0,
        "successful": 0,
        "failed": 0
    },
    "_seq_no": 10,
    "_primary_term": 5
}

post带_update对比原来的数据,与原来的一样什么都不做version和sql_no也不会改变

不带_update或put更新的post请求

POST customer/external/1

{ 
    "name": "John Doe2"
}

不会去比对信息

PUT customer/external/1

同理

总结

不同:POST 操作会对比源文档数据,如果相同不会有什么操作,文档 version 不增加

PUT 操作总会将数据重新保存并增加 version 版本;

                带_update 对比元数据如果一样就不进行任何操作。

        看场景;

                对于大并发更新,不带 update;

                对于大并发查询偶尔更新,带 update;对比更新,重新计算分配规则

更新同时增加属性

POST customer/external/1/_update

{
     "doc": { "name": "Jane Doe", "age": 20 }
}

PUT 和 POST 不带_update 也可以 

5、删除文档&索引

DELETE customer/external/1

响应:

{
    "_index": "customer",
    "_type": "external",
    "_id": "1",
    "_version": 8,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 11,
    "_primary_term": 5
}

DELETE customer

响应 :

{
    "acknowledged": true
}

不存在删除类型type的玩意

6、bulk 批量 API

POST customer/external/_bulk
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

语法格式:

{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n

复杂的例子: 

POST /_bulk
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "My first blog post" }
{ "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "123"} }
{ "doc" : {"title" : "My updated blog post"} }

响应 

#! Deprecation: [types removal] Specifying types in bulk requests is deprecated.
{
  "took" : 137,
  "errors" : false,
  "items" : [
    {
      "delete" : {
        "_index" : "website",
        "_type" : "blog",
        "_id" : "123",
        "_version" : 1,
        "result" : "not_found",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 0,
        "_primary_term" : 1,
        "status" : 404
      }
    },
    {
      "create" : {
        "_index" : "website",
        "_type" : "blog",
        "_id" : "123",
        "_version" : 2,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 1,
        "_primary_term" : 1,
        "status" : 201
      }
    },
    {
      "index" : {
        "_index" : "website",
        "_type" : "blog",
        "_id" : "5ycmXYUB7T24Ga4RRRSB",
        "_version" : 1,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 2,
        "_primary_term" : 1,
        "status" : 201
      }
    },
    {
      "update" : {
        "_index" : "website",
        "_type" : "blog",
        "_id" : "123",
        "_version" : 3,
        "result" : "updated",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 3,
        "_primary_term" : 1,
        "status" : 200
      }
    }
  ]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kali - 通过抓包获取FTP连接密码

数据来源 开始实验 实验目标:在win2003主机部署一台FTP服务器,然后winXP通过账户密码连接2003主机的FTP服务器,kali虚拟机抓取数据包获取密码。 实验拓补图 实验流程: 1、开启虚拟机并配置IP 我这里开了一台Kali、一台window…

elmentUI组建中el-date-picker实现限制时间范围精确到小时

elmentUI组建中el-date-picker实现限制时间范围精确到小时 需求要求 时间选择器只能选择今天之前的日期.默认时间是前一天00点~23点后台返回的最小时间和最大时间时间精度限制到小时 开始想着用type"datetimerange"来实现,后来发现控制时间禁用无法实现,后改变思路…

SkyEye助力飞控软件Debug

​01.Debug是什么? 1947年9月9日,美国著名科学家格蕾丝.霍普(Grace Hopper)与其同伴在对Mark II计算机进行研究时发现,导致计算机无法正常工作的罪魁祸首居然是一只粘在继电器上的小飞蛾。格蕾丝用镊子将飞蛾夹出&…

在腾讯、阿里、字节技术岗工作十年能挣普通公务员一辈子的钱吗?

在腾讯、阿里、字节技术岗工作十年,能挣到普通公务员一辈子的钱,但不一定能存到普通公务员一辈子的钱。 大厂程序员 VS 普通公务员谁更香,一直是争论不断的话题,让我们站在程序员的角度,来回答这一问题。 大厂程序员V…

打造智慧社区数字孪生应用新范式

近日,民政部、中央政法委、中央网信办、国家发展改革委等部门印发了《关于深入推进智慧社区建设的意见》,明确指出依托智慧社区综合信息平台,创新政务服务、公共服务提供方式,推动就业、健康、卫生、等服务“指尖办”、“网上办”…

家装市场“攻守道”

不同于很多属于弹性需求的消费行业,“住”属于刚性需求,因此家装就成为了人们日常生活中的重要交易场景。据《疫情下的家居消费心态调查》问卷显示,60%以上的居民不会因为疫情而放弃装修。大量的装修需求激发了家装的活力,家装市场…

Node.js 模块化(二) 开发包/模块加载机制

1. 开发属于自己的包 1. 需要实现的功能 2. 初始化包的基本结构 3. 初始化 package.json 属性: name:包的名称(不能重复,在官网检索一下,避免重复) version:版本号 main:入口文件&a…

如何下载并生成等高线

如何下载并生成等高线 发布时间:2018-01-17 版权: 同步视频教程:下载高程等高线使用视频教程-Bigemap GIS Office 专题地图制作视频教程:地图数据应用(制作地图效果的基本过程)-Bigemap GIS Office 视频…

【vue】关于路由的使用

(1)路由步骤 根据官方的文档,我们的路由大概需要以下的几种构成 (1)首先引入组件 (2)创建routes布局 (3)创建router对象 (4)抛出 &#xff0…

最长公共子序列

最长公共子序列一、题目二、思路1、状态转移方程(1)状态表示(2)状态转移2、循环设计三、代码一、题目 二、思路 这道题是一个很经典的DP问题,那么我们来看一下如何分析。 DP问题我们需要考虑两个问题:第一…

【Javassist】快速入门系列11 当检测到显示类型转换时用代码块替换

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 04 使用Javassist更改整个方法体 05 当有指定方法调用时替换方法调用的内容 06 当有构造方法调用时替换方法调用的内容 07 当检测到字段被访问时使用语…

深度剖析钓鱼网站域名识别工具dnstwist

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

漫途设备远程运维平台在制造业中的应用!

我国正处于从制造大国向制造强国迈进的关键时期,制造业的数字化、网络化、智能化以及绿色制造体系(双碳为代表)的打造事关制造业全局,是制造业高质量、可持续发展的关键与重要着力点。而设备智能运维是智能制造行业的短板。 存在以…

回归童年的美好 守住童年的回忆 那些年你玩过的游戏都有呢

时过迁境,曾经与我们一同玩耍的发小、同学,也因为工作、家庭原因早已各奔东西不在自己的身边。 还依稀记得孩童时期和小伙伴们一同蹲在大头电视前,快乐的玩着红白机的魂斗罗、超级玛丽还有炸弹人。稍微长大后,家里有了大头显示器…

ArcGIS基础实验操作100例--实验19按值修改栅格值

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验19 按值修改栅格值 目录 一、实验背景 二、实验数据 三、实验步骤 (1&am…

Winsock套接字开发网络聊天室实例(C/S)模式

聊天室的基本要求 聊天器采用客户端/服务器(C/S)模式; 1,客户端利用UDP与服务器连接,客户端与客户端之间通过UDP互相通讯; 2,服务器端具有服务器端口设置,维护客户端个人信息&#…

SQL INNER JOIN:内连接

INNER JOIN 是 SQL 中最重要、最常用的表连接形式,只有当连接的两个或者多个表中都存在满足条件的记录时,才返回行。 SQL INNER JOIN 子句将 table1 和 table2 中的每一条记录进行比较,以找到满足条件的所有记录,然后将每一对满足…

YGG 公会发展计划(GAP)第二季总结

Yield Guild Games(YGG)正在结束其公会发展计划(GAP)的第二季,这是一个成就驱动的社区代币分配协议,奖励 YGG 成员通过优质贡献为公会提供价值。 第二季的 GAP 包括 117 个任务式的「成就」,为了…

有向图的概念和java代码实现

有向图定义 有向图是一副具有方向性的图,是由一组顶点和一组有方向的边组成的,每条方向的边都连着一对有序的顶点。 出度: 由某个顶点指出的边的个数称为该顶点的出度。 入度: 指向某个顶点的边的个数称为该顶点的入度。 有向路径…

重学redux之Redux Toolkit(四)

更新第四篇了,这篇是最终篇,没有基础的最好看看前几篇,篇幅有限,更多的是一个指导,如果有不清楚的地方,可评论区留言(最好自己找度娘问问),引用官方说话,先来了解一下 redux toolkit 是什么东西 Redux Toolkit 是什么? Redux Toolkit 是 Redux 官方强烈推荐,开箱…