下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 21 | Index Template和Dynamic Template
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

Elasticsearch核心技术与实战

共100讲 · 约1000分钟
16563
免费
01 | 课程介绍
免费
02 | 内容综述及学习建议
免费
03 | Elasticsearch简介及其发...
免费
04 | Elastic Stack家族成员及...
免费
05 | Elasticsearch的安装与...
06 | Kibana的安装与界面快速...
07 | 在Docker容器中运行Elas...
08 | Logstash安装与导入数据
09 | 基本概念:索引、文档和...
10 | 基本概念:节点、集群、分...
11 | 文档的基本CRUD与批量操...
12 | 倒排索引介绍
13 | 通过Analyzer进行分词
14 | Search API概览
15 | URI Search详解
16 | Request Body与Query ...
17 | Query String&Simple ...
18 | Dynamic Mapping和常见...
19 | 显式Mapping设置与常见参...
20 | 多字段特性及Mapping中配...
21 | Index Template和Dynami...
22 | Elasticsearch聚合分析简...
23 | 第一部分总结
24 | 基于词项和基于全文的搜索
25 | 结构化搜索
26 | 搜索的相关性算分
27 | Query&Filtering与多字...
28 | 单字符串多字段查询:Dis...
29 | 单字符串多字段查询:Mult...
30 | 多语言及中文分词与检索
31 | Space Jam,一次全文搜索...
32 | 使用Search Template和In...
33 | 综合排序:Function Scor...
34 | Term&Phrase Suggester
35 | 自动补全与基于上下文的提...
36 | 配置跨集群搜索
37 | 集群分布式模型及选主与脑...
38 | 分片与集群的故障转移
39 | 文档分布式存储
40 | 分片及其生命周期
41 | 剖析分布式查询及相关性算...
42 | 排序及Doc Values&Field...
43 | 分页与遍历:From, Siz...
44 | 处理并发读写操作
45 | Bucket & Metric聚合分...
46 | Pipeline聚合分析
47 | 作用范围与排序
48 | 聚合分析的原理及精准度问...
49 | 对象及Nested对象
50 | 文档的父子关系
51 | Update By Query &...
52 | Ingest Pipeline & Pa...
53 | Elasticsearch数据建模实...
54 | Elasticsearch数据建模最...
55 | 第二部分总结回顾
56 | 集群身份认证与用户鉴权
57 | 集群内部安全通信
58 | 集群与外部间的安全通信
59 | 常见的集群部署方式
60 | Hot & Warm架构与Shard...
61 | 分片设计及管理
62 | 如何对集群进行容量规划
63 | 在私有云上管理Elasticsea...
64 | 在公有云上管理与部署Elas...
65 | 生产环境常用配置与上线清...
66 | 监控Elasticsearch集群
67 | 诊断集群的潜在问题
68 | 解决集群Yellow与Red的问...
69 | 提升集群写性能
70 | 提升进群读性能
71 | 集群压力测试
72 | 段合并优化及注意事项
73 | 缓存及使用Breaker限制内...
74 | 一些运维的相关建议
75 | 使用Shrink与Rollover AP...
76 | 索引全生命周期管理及工具...
77 | Logstash入门及架构介绍
78 | 利用JDBC插件导入数据到El...
79 | Beats介绍
80 | 使用Index Pattern配置数...
81 | 使用Kibana Discover探索...
82 | 基本可视化组件介绍
83 | 构建Dashboard
84 | 用Monitoring和Alerting监...
85 | 用APM进行程序性能监控
86 | 用机器学习实现时序数据的...
87 | 用机器学习实现时序数据的...
88 | 用ELK进行日志管理
89 | 用Canvas做数据演示
90 | 项目需求分析及架构设计
91 | 将电影数据导入Elasticsea...
92 | 搭建你的电影搜索服务
93 | 需求分析及架构设计
94 | 数据Extract & Enrichm...
95 | 构建Insights Dashboard
96 | Elastic认证介绍
97 | 考点梳理
98 | 集群数据备份
99 | 基于Java和Elasticseach构...
100 | 结束语

精选留言(12)

  • 2019-08-29
    Index Template的应用是在自动创建索引的时候。
    https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#index-creation
    所以如果是自己预先创建索引而不使用ES的自动创建索引,Index Template就不会生效。并不是老师所说的会被自己定义的mapping覆盖哟~

    作者回复: 我说的没有错。你可以设置一个template,然后自己写一个mapping,override部分设置。然后写入一个文档后,查看一下实际的mapping和setting

    2
  • 2019-08-27
    有没有谁遇到kibana的console光标定位不准确的问题,想要选择的单词总是选择不上,编辑东西很痛苦
    1
    2
  • 2019-07-14
    你好,老师
    我有两个ES 集群, 分别是6.6.1 和6.7.1, 使用下面的template, 在6.7.1上面, 字符型的字段如 action可以searchable 和aggregatable; 但是在6.6.1上面,字符型的字段不能searchable 和aggregatabl, 但是在新建了一个 action.keyword, 可以searchable 和aggregatable.

    请问我需要在6.6.1上作怎样的设置才能让字段本身可以searchable 和aggregatable?

      "mappings": {
        "_default_": {
          "dynamic": true,
          "dynamic_templates": [
            {
              "string_fields": {
                "mapping": {
                  "type": "keyword"
                },
                "match_mapping_type": "string",
                "match": "*"
              }
            }
          ],
        }
      }
    展开

    作者回复: text和keyword都支持搜索和聚合。

    text类型如果要支持聚合,需要吧fielddata设置成true。

    2
  • 2019-07-09
    index template的工作方式中的第一条是应用elasticsearch默认的settings和mappings,请问这里默认的settings和mappings是怎么查看其默认值并对其设定的?

    作者回复: 你如果写一个匹配*的template,那就会overwrite掉默认值。如果没有任何template,你创建一个索引,不设置settings。然后通过查看其setteings,得到的就是系统的默认设定值

    3
    2
  • 2019-07-10
    比如说我创建了一个3节点的集群,然后副本设置为5,es的这个副本也是分到3个节点中吗,不关心节点的数量?

    作者回复: 副本会确保和主分片不分配在一个节点上。如果节点过少,副本过多,会导致副本分片无法分配,集群变黄。

    2
    1
  • 2019-07-10
    老师,es的mapping操作和logstash的grok有什么区别呢?在现实是使用是否有场景的特殊性?

    作者回复: mapping定义索引的字段类型和分词。
    grok解析日志数据,只要是在写入之前的一些数据抽取转换

    1
  • 2019-10-19
    full_name字段是怎么来的啊?
  • 2019-10-08
    老师,如何按天创建索引

    作者回复: 创建时 索引名字中带上时间信息。你也可以使用es的math函数,创建出带日期信息的索引名字。在后续的时间序列索引的章节有相关demo

  • 2019-09-19
    Index Template 和 Dynamic Template 目前没用过,我的理解就是能定制化一些Mapping设置,你设置了就用你设置的(前提是能匹配上)否则就有系统默认的。
    需要标准化管理的可以尝试,这样能规范化且减少沟通和管理成本。
  • 2019-07-27
    "mappings":{
        "dynamic_templates":[
          {
            "string_as_boolean":{
              "match":"is*",
              "match_mapping_type":"string",
              "mapping":{
                "type":"boolean"
              }
            }
          },
          {
            "string_as_keyword":{
              "match_mapping_type":"string",
              "mapping":{
                "type":"keyword"
              }
            }
          }
        ]
      }

    =================
    老师,貌似以前的版本mapping中的type也是string吧,现在都是text了,是吗?
    match_mapping_type类型为string,这个string是应该和mapping中的text不是一回事吧,
    还有 index template 是站在全局的,设置settings,或者其他的一些设置比如date_detection,而dynamic template是针对具体某个索引的 ,这样理解对吗
    展开
  • 2019-07-15
    PUT my_index2
    {
      "mappings": {
        "dynamic_date_formats": [
            {
              "full_name" : {
                "path_match" : "name.*",
                "path_unmatch" : "*.middle",
                "mapping" : {
                  "type": "text",
                  "copy_to" : "full_name"
                }
              }
            }
          ]
      }
    }
    报错:

    暖色浮余生 2019/7/15 16:14:07
    {
      "error": {
        "root_cause": [
          {
            "type": "mapper_parsing_exception",
            "reason": "Failed to parse mapping [_doc]: Invalid format: [{full_name={path_match=name.*, path_unmatch=*.middle, mapping={copy_to=full_name, type=text}}}]: expected string value"
          }
        ],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [_doc]: Invalid format: [{full_name={path_match=name.*, path_unmatch=*.middle, mapping={copy_to=full_name, type=text}}}]: expected string value",
        "caused_by": {
          "type": "illegal_argument_exception",
          "reason": "Invalid format: [{full_name={path_match=name.*, path_unmatch=*.middle, mapping={copy_to=full_name, type=text}}}]: expected string value"
        }
      },
      "status": 400
    }
    我仔细检查了下json 好像是没有有问题的。实在不知道问题了。麻烦老师了
    展开

    作者回复: mappings下面,应该写 dynamic_templates
    你自己写了个名字“dynamic_date_formats”

    参考下面这个
    PUT my_index2/
    {
      "mappings": {
        "dynamic_templates": [
            {
              "full_name" : {
                "path_match":"name.*",
                "path_unmatch":"*.middle",
                "mapping" : {
                  "type":"text",
                  "copy_to":"full_name"
                }
              }
            }
          ]
      }
    }


    2
  • 2019-07-10
    老师,es 需要对index进行分片吗,像mysql一样,按照一定的逻辑横向切分,如果需要,单索引数据量达到多少后需要考虑分片

    作者回复: 会。分片大小控制在30g到100g之间比较好

    3