tencent cloud

文档反馈

默认索引模板说明和调整

最后更新时间:2019-11-12 17:26:49

    默认模板说明

    索引模板是预先定义好的在创建新索引时自动应用的模板,主要包括索引设置、映射和模板优先级等配置。腾讯云 ES 在集群创建时提供了一个默认的索引模板,您可以在 Kibana 界面的【Dev Tools】中通过命令GET _template/default@template查看这个模板。下面是默认模板及其中配置的一些说明,可以根据需求适当调整这些配置。

    {
      "default@template": {
        "order": 1, // 模板优先级,数值越大优先级越高
        "index_patterns": [ // 模板应用的索引
          "*"
        ],
        "settings": {
          "index": {
            "max_result_window": "65536", // 最大查询窗口,如果查询的窗口超过该大小,会报 Result window is too large 错误,需要调大这个配置
            "routing": {
              "allocation": {
                "include": {
                  "temperature": "hot"
                }
              }
            },
            "refresh_interval": "30s", // 索引刷新间隔,被索引的文档在该间隔后才能被查询到,如果对于查询实时性要求较高,可以适当调小该值,但是值过小将影响写入性能
            "unassigned": {
              "node_left": {
                "delayed_timeout": "5m"
              }
            },
            "translog": {
              "sync_interval": "5s", // translog 刷盘间隔,值过小将影响写入性能
              "durability": "async" 
            },
            "number_of_replicas": "1" // 副本分片数
          }
        },
        "mappings": {
          "_default_": {
            "_all": {
              "enabled": false // 建议禁用,_all 字段会包含所有其他字段形成一个大字符串,会占用较多磁盘空间,也会影响写入性能
            },
            "dynamic_templates": [ // 动态模板
              {
                "message_full": { // 将名为 message_full 的字段动态映射为 text 和 keyword 类型
                  "match": "message_full",
                  "mapping": {
                    "type": "text",
                    "fields": {
                      "keyword": {
                        "type": "keyword",
                        "ignore_above": 2048
                      }
                    }
                  }
                }
              },
              {
                "message": { // 将名为 message 的字段动态映射为 text 类型
                  "match": "message",
                  "mapping": {
                    "type": "text"
                  }
                }
              },
              {
                "strings": { // 将 string 类型字段动态映射为 keyword 类型
                  "match_mapping_type": "string",
                  "mapping": {
                    "type": "keyword"
                  }
                }
              }
            ]
          }
        },
        "aliases": {}
      }
    }

    模板调整

    您可以在 Kibana 界面的【Dev Tools】中通过命令PUT _template/my_template自定义自己的索引模板,并通过设置模板优先级order的数值大于默认模板优先级来覆盖默认的索引模板中的配置。

    索引模板仅在索引创建时应用,因此模板调整不会对已有的索引产生影响。

    调整主分片个数

    在 Elasticsearch 5.6.4版本和6.4.3版本中,默认的索引主分片个数为5个。对于数据规模较小、索引个数较多的场景,建议调小主分片个数,以减轻索引元数据对堆内存的压力。您可以参考下面模板调整主分片个数:

    {
      "index_patterns" : ["*"],
        "order" : 2, // 请确保模板中 order 字段的值大于1
        "settings" : {
            "index": {
                "number_of_shards" : 1
            }
        }
    }

    调整字段类型

    在默认模板中,我们将 string 类型字段动态映射为 keyword 类型,以防止对所有文本类型数据都进行全文索引。您可以根据业务需求,修改指定 string 类型字段为 text,使其可以全文索引:

    {
      "index_patterns" : ["*"],
        "order" : 2, // 请确保模板中 order 字段的值大于1
        "mappings": {
          "properties": {
            "字段名": {
              "type":  "text"
            }
        }
      }
    }

    其他业务场景

    例如,您希望让索引的文档在10s之后就能被搜索到,并应用于所有的search-*索引,那么您可以新建一个如下的模板:

    {
        "index_patterns" : ["search-*"],
        "order" : 2, // 请确保模板中 order 字段的值大于1
        "settings" : {
            "index": {
                "refresh_interval": "10s"
            }
        }
    }
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持