乐趣区

关于es7:elasticsearch中的索引模版修改字段类型

索引模板是一种通知 Elasticsearch 在创立索引时如何配置索引的办法。
在创立索引之前能够先配置模板,这样在创立索引(手动创立索引或通过对文档建设索引)时,模板设置将用作创立索引的根底。

  • 模板类型

    模板有两种类型:索引模板和组件模板。

组件模板是可重用的构建块,用于配置映射,设置和别名;它们不会间接利用于一组索引。
索引模板能够蕴含组件模板的汇合,也能够间接指定设置,映射和别名。
索引模板中的优先级
可组合模板优先于旧模板。如果没有可组合模板匹配给定索引,则旧版模板可能仍匹配并被利用。
如果应用显式设置创立索引并且该索引也与索引模板匹配,则创立索引申请中的设置将优先于索引模板及其组件模板中指定的设置。
如果新数据流或索引与多个索引模板匹配,则应用优先级最高的索引模板。
内置索引模板
Elasticsearch 具备内置索引模板,每个索引模板的优先级为 100,实用于以下索引模式:

logs-*-*
metrics-*-*
synthetics-*-*
  • 理论需要

在 logstash 中的 filter 模块应用了 uuid 这个插件生成了一个随机的 uuid,logstash 再将日志发往 elasticsearch,因为开发须要将 uuid 参加到 elasticsearch 的聚合中,这里补充 elasticsearch 中的 text 和 keyword 相干内容

text : 当一个字段是要被全文搜寻的,比方 Email 内容、产品描述,应该应用 text
类型。设置 text 类型当前,字段内容会被剖析,在生成倒排索引以前,字符串会被分
析器分成一个一个词项。text 类型的字段不用于排序,很少用于聚合。

keyword: keyword 类型实用于索引结构化的字段,比方 email 地址、主机名、
状态码和标签。如果字段须要进行过滤(比方查找已公布博客中 status 属性为
published 的文章)、排序、聚合。keyword 类型的字段只能通过准确值搜寻到。

目标:须要将 uuid 的类型指定成 keyword
查到索引用的是哪个索引模板,或者新建一个索引模版制订用于哪个索引,增加映射,将 uuid 指定为 keyword,即为关键字。

在 kibana 的开发工具界面执行

GET _cat/templates?pretty

查问所有的模版

GET _mapping?pretty

查问所有的 mapping

GET _template/logstash?pretty

  • 查问指定的模版

假如返回为

{
  "logstash" : {
    "order" : 0,
    "version" : 60001,
    "index_patterns" : [
      "logstash-*",
      "message*"
    ],
    "settings" : {
      "index" : {
        "number_of_shards" : "1",
        "refresh_interval" : "5s"
      }
    },
    "mappings" : {
      "dynamic_templates" : [
        {
          "message_field" : {
            "path_match" : "message",
            "mapping" : {
              "norms" : false,
              "type" : "text"
            },
            "match_mapping_type" : "string"
          }
        },
        {
          "string_fields" : {
            "mapping" : {
              "norms" : false,
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "ignore_above" : 256,
                  "type" : "keyword"
                }
              }
            },
            "match_mapping_type" : "string",
            "match" : "*"
          }
        }
      ],
      "properties" : {
        "uuid2" : {"type" : "keyword"},
        "@timestamp" : {"type" : "date"},
        "geoip" : {
          "dynamic" : true,
          "type" : "object",
          "properties" : {
            "ip" : {"type" : "ip"},
            "latitude" : {"type" : "half_float"},
            "location" : {"type" : "geo_point"},
            "longitude" : {"type" : "half_float"}
          }
        },
        "@version" : {"type" : "keyword"}
      }
    },
    "aliases" : {}}
}

将其中的某个字段的类型,改为想要的,而后 POST 进来即可。

图形界面操作

退出移动版