es模板常用操作

添加模板

PUT _template/demo_tpl
{
  "order": 0,
  "index_patterns": [
    "demo_*"
  ],
  "settings": {
    "index": {
      "max_result_window": "10000000",
      "max_ngram_diff": "15",
      "refresh_interval": "1s",
      "analysis": {
        "analyzer": {
          "demo_custom_std_analyzer": {
            "filter": [
              "lowercase"
            ],
            "char_filter": [
              "demo_remove_char_filter",
              "html_strip"
            ],
            "tokenizer": "standard"
          },
          "demo_analyzer": {
            "filter": "lowercase",
            "tokenizer": "demo_tokenizer"
          }
        },
        "char_filter": {
          "demo_remove_char_filter": {
            "type": "mapping",
            "mappings": [
              """\\n => ' '""",
              """\\r => ' '""",
              """\\t => ' '"""
            ]
          }
        },
        "tokenizer": {
          "demo_tokenizer": {
            "token_chars": [
              "letter",
              "digit"
            ],
            "min_gram": "2",
            "type": "ngram",
            "max_gram": "15"
          }
        }
      },
      "number_of_shards": "6",
      "number_of_replicas": "1"
    }
  },
  "mappings": {
    "properties": {
      "msg": {
        "analyzer": "demo_analyzer",
        "type": "text",
        "fields": {
          "keyword": {
            "ignore_above": 256,
            "type": "keyword"
          }
        }
      },
      "fullText": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        "analyzer": "demo_custom_std_analyzer"
      },
      "id": {
        "ignore_above": 256,
        "type": "keyword"
      }
    }
  },
"aliases": {
    "{index}-alias" : {}
  }
}

 获取/删除 模板

GET _template/demo_tpl


DELETE _template/demo_tpl

Index template 仅在 index 创建期间应用(包括自动写入数据创建)。 对 index template 的更改不会影响现有索引。 create index API 请求中指定的设置和映射会覆盖索引模板中指定的任何设置或映射。

覆盖模板配置

这样制定配置覆盖模板中的参数

PUT demo_202406
{
   "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 2
      }
}

也可以添加索引,模板相当于这个mapping中固有的一段语句,之后可以删除修改
PUT demo_202406/_mapping
{
  "properties": {
    "type": {
      "type": "integer"
    }
  }
}

Index 匹配多个 template

多个索引模板可能与索引匹配,在这种情况下,设置和映射都合并到索引的最终配置中。 可以使用 order 参数控制合并的顺序,首先应用较低的顺序,高的覆盖低的。 例如:

PUT /_template/template_1
{
    "index_patterns" : ["*"],
    "order" : 0,
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "_source" : { "enabled" : false }
    }
}
 
PUT /_template/template_2
{
    "index_patterns" : ["te*"],
    "order" : 1,
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "_source" : { "enabled" : true }
    }
}



以上的 template_1 将禁用存储 _source,但对于以 te * 开头的索引,仍将启用 _source。 注意,对于映射,合并是 “深度” 的,这意味着可以在高阶模板上轻松添加/覆盖特定的基于对象/属性的映射,而较低阶模板提供基础。

我们可以来创建一个例子看看:

PUT test10
 
GET test10

显示的结果是:

{
  "test10" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1567654333181",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "iEwaQFl9RAKyTt79PduN-Q",
        "version" : {
          "created" : "7030099"
        },
        "provided_name" : "test10"
      }
    }
  }
}

如果我们创建另外一个不是以  “te” 开头的 index,我们可以看看如下的情况:

PUT my_test_index
GET my_test_index

显示的结果是:

{
  "my_test_index" : {
    "aliases" : { },
    "mappings" : {
      "_source" : {
        "enabled" : false
      }
    },
    "settings" : {
      "index" : {
        "creation_date" : "1567654713059",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "aSsIZMT2RyWKT44G2dF2zg",
        "version" : {
          "created" : "7030099"
        },
        "provided_name" : "my_test_index"
      }
    }
  }
}

 

显然在 mappings 里显示 source 是被禁止的。

如果对于两个 templates 来说,如果 order 是一样的话,我们可能陷于一种不可知论的合并状态。在实际的使用中必须避免

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值