当前播放: 11 | 文档的基本CRUD与批量操作
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:概述 (4讲)
01 | 课程介绍
免费
02 | 内容综述及学习建议
免费
03 | Elasticsearch简介及其发展历史
免费
04 | Elastic Stack家族成员及其应用场景
免费
第二章:安装上手 (4讲)
05 | Elasticsearch的安装与简单配置
免费
06 | Kibana的安装与界面快速浏览
07 | 在Docker容器中运行Elasticsearch Kibana和Cerebro
08 | Logstash安装与导入数据
第三章:Elasticsearch入门 (15讲)
09 | 基本概念:索引、文档和REST API
10 | 基本概念:节点、集群、分片及副本
11 | 文档的基本CRUD与批量操作
12 | 倒排索引介绍
13 | 通过Analyzer进行分词
14 | Search API概览
15 | URI Search详解
16 | Request Body与Query DSL简介
17 | Query String&Simple Query String查询
18 | Dynamic Mapping和常见字段类型
19 | 显式Mapping设置与常见参数介绍
20 | 多字段特性及Mapping中配置自定义Analyzer
21 | Index Template和Dynamic Template
22 | Elasticsearch聚合分析简介
23 | 第一部分总结
第四章:深入搜索 (13讲)
24 | 基于词项和基于全文的搜索
25 | 结构化搜索
26 | 搜索的相关性算分
27 | Query&Filtering与多字符串多字段查询
28 | 单字符串多字段查询:Dis Max Query
29 | 单字符串多字段查询:Multi Match
30 | 多语言及中文分词与检索
31 | Space Jam,一次全文搜索的实例
32 | 使用Search Template和Index Alias查询
33 | 综合排序:Function Score Query优化算分
34 | Term&Phrase Suggester
35 | 自动补全与基于上下文的提示
36 | 配置跨集群搜索
第五章:分布式特性及分布式搜索的机制 (8讲)
37 | 集群分布式模型及选主与脑裂问题
38 | 分片与集群的故障转移
39 | 文档分布式存储
40 | 分片及其生命周期
41 | 剖析分布式查询及相关性算分
42 | 排序及Doc Values&Fielddata
43 | 分页与遍历:From, Size, Search After & Scroll API
44 | 处理并发读写操作
第六章:深入聚合分析 (4讲)
45 | Bucket & Metric聚合分析及嵌套聚合
46 | Pipeline聚合分析
47 | 作用范围与排序
48 | 聚合分析的原理及精准度问题
第七章:数据建模 (7讲)
49 | 对象及Nested对象
50 | 文档的父子关系
51 | Update By Query & Reindex API
52 | Ingest Pipeline & Painless Script
53 | Elasticsearch数据建模实例
54 | Elasticsearch数据建模最佳实践
55 | 第二部分总结回顾
第八章:保护你的数据 (3讲)
56 | 集群身份认证与用户鉴权
57 | 集群内部安全通信
58 | 集群与外部间的安全通信
第九章:水平扩展Elasticsearch集群 (6讲)
59 | 常见的集群部署方式
60 | Hot & Warm架构与Shard Filtering
61 | 分片设计及管理
62 | 如何对集群进行容量规划
63 | 在私有云上管理Elasticsearch集群的一些方法
64 | 在公有云上管理与部署Elasticsearch集群
第十章:生产环境中的集群运维 (10讲)
65 | 生产环境常用配置与上线清单
66 | 监控Elasticsearch集群
67 | 诊断集群的潜在问题
68 | 解决集群Yellow与Red的问题
69 | 提升集群写性能
70 | 提升进群读性能
71 | 集群压力测试
72 | 段合并优化及注意事项
73 | 缓存及使用Breaker限制内存使用
74 | 一些运维的相关建议
第十一章:索引生命周期管理 (2讲)
75 | 使用Shrink与Rollover API有效管理时间序列索引
76 | 索引全生命周期管理及工具介绍
第十二章:用Logstash和Beats构建数据管道 (3讲)
77 | Logstash入门及架构介绍
78 | 利用JDBC插件导入数据到Elasticsearch
79 | Beats介绍
第十三章:用Kibana进行数据可视化分析 (4讲)
80 | 使用Index Pattern配置数据
81 | 使用Kibana Discover探索数据
82 | 基本可视化组件介绍
83 | 构建Dashboard
第十四章:探索X-Pack套件 (6讲)
84 | 用Monitoring和Alerting监控Elasticsearch集群
85 | 用APM进行程序性能监控
86 | 用机器学习实现时序数据的异常检测(上)
87 | 用机器学习实现时序数据的异常检测(下)
88 | 用ELK进行日志管理
89 | 用Canvas做数据演示
实战1:电影搜索服务 (3讲)
90 | 项目需求分析及架构设计
91 | 将电影数据导入Elasticsearch
92 | 搭建你的电影搜索服务
实战2:Stackoverflow用户调查问卷分析 (3讲)
93 | 需求分析及架构设计
94 | 数据Extract & Enrichment
95 | 构建Insights Dashboard
备战:Elastic认证 (5讲)
96 | Elastic认证介绍
97 | 考点梳理
98 | 集群数据备份
99 | 基于Java和Elasticseach构建应用
100 | 结束语
11 | 	文档的基本CRUD与批量操作

11 | 文档的基本CRUD与批量操作

阮一鸣
eBay Pronto平台技术负责人
100讲 约1000分钟16792
单独订阅¥129
2人成团¥89
29
登录 后留言

精选留言(41)

  • brooks
    建议用井号注释,这样就不会在左边有报错提示了

    作者回复: 👍

    2019-10-10
    3
  • David
    不要发送过多数据,一般多少数据才算是过多呢?

    作者回复: 很好的问题。比较笼统的说,一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M。会报错

    2019-06-27
    1
    3
  • LoveDlei
    老师,问您个问题,ES从2.x升级到7.1会有问题吗?比如说调用的API和数据结构等其他的兼容问题?
    您有好的建议嘛?
    是不是可以加个答疑,讲解一下?

    作者回复: 在后续的课程中会涵盖full restart 升级个滚动升级相关的问题。

    简单回答一下你的问题
    1. 大版本更新, API会有向后不兼容的情况发生

    2.大版本的升级,数据需要重建索引

    2019-06-27
    1
    3
  • QQ怪
    老师_bulk里面的{ "field1" : "value1" }和{ "doc" : {"field2" : "value2"} }有啥作用?
    我看了好像是定义修改/创建之后是否需要返回及其返回值格式,不知道对不对?

    作者回复: field1,field2,是你的文档的字段名字。

    例如,你写入一个user相关的文档,它可能是这样的

    {"userName":"jack","email":"jack@google.com"}

    Bulk API的返回,你可以自己在kibana中测试,应该是一个一个文档操作的具体返回结果

    2019-06-26
    4
    3
  • 吾皇万岁万岁万万岁
    mget 和 msearch 有什么区别? 不都是查询吗?

    作者回复: mget 是通过文档ID列表得到文档信息。

    msearch 是根据查询条件,搜索到相应文档。

    2019-06-26
    4
    3
  • DDs moving castle
    我觉得对于ES的POST、PUT请求可以这么按照http请求的“幂等性”来理解。
    https://blog.csdn.net/u010651249/article/details/84350061。
    PUT方法要求是幂等的,POST方式不是幂等的,POST方法修改资源状态时,URL指示的是该资源的父级资源,待修改资源的信息在请求体中携带。而PUT方法修改资源状态时,URL直接指示待修改资源。
    所以,对于ES的PUT请求,URL上需要明确到document ID,即可以新增又可以更新整个文档(ES的更新都是get-有就delete-再创建),但无论如何都是这一个document。由于PUT请求既可以新增又可以更新的特性,为了提供put-if-absent特性,即没有时才新增,增加了op_type=create的选项(op_type只有create、index)。
    而POST请求URL是不需要指定ID的,每次都会创建一个新的文档,就不是幂等的。
    (其实PUT请求执行的操作,把PUT换成POST也是可以的,但这个官方没有说,是实验出来的)

    上面是根据Http请求来区分,如果根据ES API来区分:
    index: 针对整个文档,既可以新增又可以更新;
    create:只是新增操作,已有报错,可以用PUT指定ID,或POST不指定ID;
    update:指的是部分更新,官方只是说用POST,请求body里用script或 doc里包含文档要更新的部分;
    delete和read:就是delete和get请求了,比较简单。

    作者回复: 👍

    2019-10-01
    1
    2
  • crossbell
    es版本升级太迅速了,今天发布7.2了

    作者回复: 嗯,7.2增加了SEIM部分的更新。同时继承了appsearch。appsearch我本就计划会讲。SEIM部分我也会考虑加入我们的课程

    2019-06-28
    2
  • rexzhao
    请问老师,我们在写入 doc 内容之前,不需要先定义好 index 的结构吗? 之前 09 课中说的 mapping 不是要定义文档字段的类型吗?

    作者回复: dynamic mapping的概念会在后续章节中讲解。你可以不做mapping,es会自动根据文档类型进行类型推断。并采用一些默认的配置。在生产环境中,建议做mapping设定,再写入数据

    2019-06-27
    1
    2
  • InfoQ_76fc1b19abd6
    3分50多秒的指定id来create应该是put吧,老师,虽然是个小问题,但听的时候还是疑惑了一下。感谢老师的讲解,很nice
    2019-07-31
    1
  • 时彬斌
    ID是使用默认的(es帮忙生成)还是使用自己批量滚动创建合适,听说自己创建ID的话需要考虑分片和存储平衡的问题

    作者回复: 自己创建id,需要考虑id的均衡性,避免产生分配不均衡的问题

    2019-07-03
    1
  • liwenqiu
    老师好,请问一下 ES 如何支持多租户的?是否可以做查询逻辑的隔离或者物理数据的隔离?

    作者回复: 通过 X-Pack 的security 插件,提供索引级,字段级别的 Role based的数据访问控制

    2019-06-27
    1
    1
  • 朽木自雕
    index是干啥的,不是crud吗?

    作者回复: Index = 删除再创建

    Create = 创建新文档,如果已经存在,会报错

    Update = 会对文档做增量的更新

    2019-06-27
    1
  • c
    api这么多 怎么记得住啊

    作者回复: 基本的CRUD 记住。其他的 API 无非就是 查询和聚合。

    自己可以做一些归类,这样会帮助自己强化记忆。另外,不用死记 API,Kibana 的 Console 中有代码的提示与自动完成功能

    2019-06-26
    1
  • 忘川千叶子
    老师您好,在操作bulk批量写入数据的时候,我不想每次都给个id具体的数值,能不能像mysql自增id那样设置呢?搜了好多资料说如下设置,"action.allow_id_generation": "true",但是失败了,老师能否给个bulk批量写入数据、设置ID自动创建的例子呢?
    2019-12-17
  • hgf
    老师,有个疑惑。

    为什么其他操作关于制定index 都是使用`_index`,但是msearch操作的时候却是`index`?这有色很美规律吗?

    作者回复: 这些也不需要特别记住,使用通过代码提示

    2019-11-07
  • 缥缈影子
    老师,我才开始学习es,现在我们系统订单数都已经超过千万,现在系统提供了按收货人电话,姓名,收货地址模糊查询的功能,数据库直接查询很慢,想用es是否可行,还有用户数据 和推送给用户的消息数据

    作者回复: 应该是适合的

    2019-10-04
  • DDs moving castle
    另外,对于update api,到底会不会删除原来的文档呢??ES都是先删除再创建是因为ES的新增操作是有索引过程的,不是简单的存储??是否可以针对文档的某个filed重新索引??

    课程里说不会,但ES基于2.x的中文文档关于“更新整个文档”一章最后说:
    在本章的后面部分,我们会介绍 update API, 这个 API 可以用于 partial updates to a document 。 虽然它似乎对文档直接进行了修改,但实际上 Elasticsearch 按前述完全相同方式执行以下过程:
    从旧文档构建 JSON
    更改该 JSON
    删除旧文档
    索引一个新文档
    唯一的区别在于, update API 仅仅通过一个客户端请求来实现这些步骤,而不需要单独的 get 和 index 请求。
    https://www.elastic.co/guide/cn/elasticsearch/guide/current/update-doc.html

    7.1英文文档关于update API的描述,倒是体现了是根据原文档修改后merge回去的:
    The update API allows to update a document based on a script provided. The operation gets the document (collocated with the shard) from the index, runs the script (with optional script language and parameters), and indexes back the result (also allows to delete, or ignore the operation). It uses versioning to make sure no updates have happened during the "get" and "reindex".
    https://www.elastic.co/guide/cn/elasticsearch/guide/current/update-doc.html
    2019-10-01
  • godtrue
    老师,能否讲一下CRUD的实现原理?假如现在从零开始,有一个索引没有任何文档。创建时,怎么定位节点或分片?怎么创建倒排索引?怎么存储数据?性能优化怎么做的?修改、删除都需要先查出来,怎么查询的?我很好奇?
    2019-09-18
  • ZRRJDD
    老师,您好,现在post和put有点迷糊。下边 post 和put 都可以用来创建,update 只能通过POST 方式
    POST users/_doc/100
    {
    "user" : "Mike",
        "post_date" : "2019-04-15T14:12:12",
        "message" : "trying out Kibana"
    }

    PUT users/_doc/101
    {
    "user" : "Mike",
        "post_date" : "2019-04-15T14:12:12",
        "message" : "trying out Kibana"
    }
    2019-08-03
    1
  • 陈泽坛
    请问老师,节点中是通过分片来保证数据的高可用性吗,那如果节点挂掉的话 是怎么保证数据高可用性的,其他节点会保存数据的副本吗?是不是意味着,每个data节点保存的索引都是一致的?

    作者回复: 分片的副本数可以设定。具体听后续章节的讲解

    2019-07-19
收起评论
看过的人还看
从0开始学架构

李运华  资深技术专家

59讲 | 39140 人已学习

拼团 ¥69 原价 ¥99
趣谈网络协议

刘超  网易研究院云计算技术部首席架构师

51讲 | 39844 人已学习

拼团 ¥69 原价 ¥99
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

48讲 | 43721 人已学习

拼团 ¥69 原价 ¥99
Kafka核心技术与实战

胡夕  人人贷计算平台部总监,Apache Kafka Contributor

46讲 | 8517 人已学习

拼团 ¥79 原价 ¥99