• 石头剪刀布
    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

    
     3
  • keke080525
    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
  • gongxt
    2019-07-10
    比如说我创建了一个3节点的集群,然后副本设置为5,es的这个副本也是分到3个节点中吗,不关心节点的数量?

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

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

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

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

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

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

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

    
    
  • godtrue
    2019-09-19
    Index Template 和 Dynamic Template 目前没用过,我的理解就是能定制化一些Mapping设置,你设置了就用你设置的(前提是能匹配上)否则就有系统默认的。
    需要标准化管理的可以尝试,这样能规范化且减少沟通和管理成本。
    
    
  • Sunqc
    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
    
我们在线,来聊聊吧