IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> elasticsearch 基础命令总结 -> 正文阅读

[大数据]elasticsearch 基础命令总结

查看elasticsearch 基本信息

image-20210713003304666

image-20210713003304666

创建索引及文档

我要创建一个为用户的索引并且加入数据

image-20210712231859894

image-20210712231859894

那么有人会可能多点了几次,发现控制台的version和result发生了变化如下

image-20210712232206719

image-20210712232206719

如果说文档id为1并不存在,那么他就会去新建,并且版本号显示为1,返回结果为created ,如果它存在,那么就会去更新版本号,并且result状态会改变,那么我们用post可不可以呢?

image-20210712232958498

image-20210712232958498

看到post和普通一样都是对版本就行的增加,那么如果说我仅仅是想要去创建索引及文档,不想要去更新,我们可以使用下面这个

image-20210712233232551

image-20210712233232551

要是不想向上面那样写,也可以这样写

image-20210712233611711

image-20210712233611711

比如说明的是ops_type只有两种值create和index

如果说需要去查看我们修改过的文档,可以用下面的命令

image-20210712233944048

image-20210712233944048

如果说仅仅是想看source内容,不想要其他内容,可以用下面的命令

image-20210712234440937

image-20210712234440937

自动生成id

刚才是我为文档特意分配了id,这回增加我们的成本,如果说我们的文档id不存在就回去新建,如果存在就会去更新,这会增加我们机器的性能成本,所以我们可以不去手动分配id,而是让软件自己去创建id,但是这个时候不能够使用put,必须使用post,不如下面这个:

image-20210712235119773

image-20210712235119773

不过我建议用下面这种方法,能和上面那种方法返回一样的信息

image-20210712234317343

image-20210712234317343

那么我如果只想要返回username,city两个字段,我们可以这样做:

image-20210712235601313

image-20210712235601313

上面是查询单个文档,那么如果我要查询多个文档呢?可以使用_mget

image-20210713000513978

image-20210713000513978

如果是想返回部分字段,那么加上_source,比如说我想返回文档1的姓名和年龄,文档文档2的姓名和城市

image-20210713000807115

image-20210713000807115

这是不是看起来有点麻烦,那么可以简单这样写:

image-20210713001147888

image-20210713001147888

当然我并不建议这样做

修改文档

上面说了创建文档,和查询文档,那么如何修改文档?其实上面也看到用post可以修改文档,但是一般我们使用post来创建文档,因为加不加id都可以创建成功,我们一般使用put来修改文档,这个时候必须指定文档id,比方说我想要把文档id为2的city改成山东,那么可以这样

image-20210713001916506

image-20210713001916506

这个时候已经修改完成了,那么可以用上面学过的get命令查看文档2的信息

image-20210713002106203

image-20210713002106203

但是发现我使用put仅仅需要修改一个city,但是却需要把username,age,sex都写上,这就有点 麻烦,可以用下面这种方法来做部分修改,也就是想改哪个写那个

image-20210713002637748

image-20210713002637748

接下来用get看看成功没有

image-20210713002739499

image-20210713002739499

看到明显是成功的,那么如果我们不知道文档id的情况下,也要修改数据,怎么办呢?我们可以先把需要修改的数据查出来,然后再做修改,比如说这样,

image-20210713104547907

image-20210713104547907

看看修改成功没有

image-20210713104708421

image-20210713104708421

看到上面都是英文字段,那么如果是中文字段是要这样写:

先导入测试数据

image-20210713105057877

image-20210713105057877

接下来就认为我不知道当前字段的文档id,再来操作一下

image-20210713105436448

image-20210713105436448

去看看修改成功没有

image-20210713105505329

image-20210713105505329

可以看到是修改成功的。

上面用的到的是update_by_query,那么其实也可以用_update来做修改,也可以达到我们想要的目的,只不过这个时候我们需要文档id

image-20210713110154413

image-20210713110154413

看下修改结果

image-20210713110215678

image-20210713110215678

其实也可以这样做,达到删除的目的

POST user/_update/2
{
  "script": {
    "source": """
    if(ctx._source.city == 1) {
      ctx.op = 'delete'
    } else {
      ctx.op = "none"
    }
    """
  }
}

upsert

我们前边做更新的时候,需要用到文档id,如果说文档id存在则更新,如果说文档id不存在就会报错,而upsert则会使有点区别,如果说我们要修改的文档id存在,则会去做修改,如果不存在就会新建该文档,也就是插入一个新文档

比如下面这个:

POST /phone/_update/3
{
     "doc": {
       "title": "华为",
       "description": "华为手机",
       "price": "5499"
      },
     "doc_as_upsert": true
}

head

  • 检索一个文档是否存在

有时候我们仅仅是想看看该文档是否存在,不想去查看该文档的内容,那么我们可以用这个

HEAD user/_doc/1
  • 查看索引是否存在
HEAD user

如果存在就会返回200,ok字样

image-20210713111754267

image-20210713111754267

delete

  • 知道文档id

如果不想要这个文档,那么也可以删除这个文档,但是比如知道该文档的id

DELETE user/_doc/1
  • 不知道文档id

那么有时候我们不知道文档id,该怎么删除呢?可以这样

POST user/_delete_by_query
{
  "query": {
    "match": {
      "username":"lisi"
    }
  }
}

使用_delete_by_query就可以把用户名为李四的文档都删除掉

  • 删除索引

我们直接delete+ 索引名就可以,比如说这样

image-20210713112032420

image-20210713112032420

这样做的话,该索引及索引中的所有文档都会被删除掉

_bulk

  • 批量处理文档

下面我们展示一下批量增加文档

格式:

POST _bulk
{"index":{"_index":[索引名],"_id":[文档id]}}
{"字段1":"变量1","字段2":"变量",...}
......

image-20210713112758710

image-20210713112758710

但是却是要注意一下,就是增加的时候不要出现空格,不然会报错

如果要是想查看文档,现在我们可以这样

image-20210713113712158

image-20210713113712158

刚刚插入了4条数据进去,现在在value中显示的是4,那么该字段表示的是该索引中的所有文档的总数,当然也可以使用count 查询文档总数

image-20210713113823842

image-20210713113823842

刚才我们用的是index 做的文档新增,那么接下来看看使用create来看看可不可以新增成功,先把刚才的user索引删除掉

DELETE user

image-20210713114239675

image-20210713114239675

看到是成功的跟index创建的时候是一样,但是这里却是有个区别那就是 create如果存在我们创建的文档id已经存在则不会成功,如果说是不存在,create才会创建该文档,而index 则是如果文档id不存在则进行新建,如果文档存在版本号会+1

刚才看了新增和查看,那么试一下批量删除,需要把create改成delete即可,如我要删除索引为user,文档id为1的文档:

image-20210713115011837

image-20210713115011837

来看一下是否成功:

image-20210713115243322

image-20210713115243322

发现找不到该文档id,那就是确认是删除成功了。

再来看看如何更新文档

刚才我们做批量新增的时候,看到文档id为2,用户名为李四的城市是在郑州,那么我把它改成上海

image-20210713115736318

image-20210713115736318

查看下修改是否成功:

image-20210713115901837

image-20210713115901837

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 23:05:55  更:2021-07-14 23:06:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 3:46:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码