白话Elasticsearch73_ES生产集群中的索引管理02

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 白话Elasticsearch73_ES生产集群中的索引管理02

20200125213431358.png20190806092132811.jpg

概述

继续跟中华石杉老师学习ES,第74篇

课程地址https://www.roncoo.com/view/55


官方指导

Index APIs: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html


1、mapping管理

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html#mapping-management

20200125015238286.png


put mapping命令可以让我们给一个已有的索引添加一个新的type,或者修改一个type,比如给某个type加一些字段


put mapping: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html


下面这个命令是在创建索引的时候,直接跟着创建一个type

curl -XPUT 'http://elasticsearch02:9200/twitter?pretty' -d ' 
{
  "mappings": {
    "tweet": {
      "properties": {
        "message": {
          "type": "text"
        }
      }
    }
  }
}'

下面这个命令是给一个已有的索引添加一个type 。 7.x 已经取消这个功能了,了解即可。

curl -XPUT 'http://elasticsearch02:9200/twitter/_mapping/user?pretty' -d ' 
{
  "properties": {
    "name": {
      "type": "text"
    }
  }
}'


下面这个命令是给一个已有的type添加一个field

curl -XPUT 'http://elasticsearch02:9200/twitter/_mapping/tweet?pretty' -d '
{
  "properties": {
    "user_name": {
      "type": "text"
    }
  }
}'



curl -XGET 'http://elasticsearch02:9200/twitter/_mapping/tweet?pretty',上面这行命令可以查看某个type的mapping映射信息


https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html


curl -XGET 'http://elasticsearch02:9200/twitter/_mapping/tweet/field/message?pretty',这行命令可以看某个type的某个field的映射信息


https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-field-mapping.html


Type exists API https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-types-exists.html


20200125015511688.png


2、索引别名管理

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html#alias-management


20200125015600827.png


curl -XPOST 'http://elasticsearch02:9200/_aliases?pretty' -d '
{
    "actions" : [
        { "add" : { "index" : "twitter", "alias" : "twitter_prod" } }
    ]
}'
curl -XPOST 'http://elasticsearch02:9200/_aliases?pretty' -d '
{
    "actions" : [
        { "remove" : { "index" : "twitter", "alias" : "twitter_prod" } }
    ]
}'
POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test2", "alias" : "alias1" } }
    ]
}

上面是给某个index添加和删除alias的命令,还有重命名alias的命令(先删除再添加),包括将一个alias绑定多个index

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test1",
                 "alias" : "alias2",
                 "filter" : { "term" : { "user" : "kimchy" } }
            }
        }
    ]
}


DELETE /logs_20162801/_alias/current_day
GET /_alias/2016


索引别名,还是挺有用的,主要是什么呢,就是说,可以将一个索引别名底层挂载多个索引,比如说7天的数据


索引别名常常和之前讲解的那个rollover结合起来,我们为了性能和管理方便,每天的数据都rollover出来一个索引,但是在对数据分析的时候,可能是这样子的,有一个索引access-log,指向了当日最新的数据,用来计算实时数据的; 有一个索引access-log-7days,指向了7天的7个索引,可以让我们进行一些周数据的统计和分析。


3、index settings管理


https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html#index-settings


20200125202314325.png

3.1 Update index settings API

语法

PUT /<index>/_settings



20200126095154696.png

curl -XPUT 'http://elasticsearch02:9200/twitter/_settings?pretty' -d '
{
    "index" : {
        "number_of_replicas" : 1
    }
}'


3.2 Get index settings API

curl -XGET 'http://elasticsearch02:9200/twitter/_settings?pretty'


20200126095400510.png


经常可能要对index做一些settings的调整,常常和之前的index open和close结合起来使用


4、index template

4.0 官方文档

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html#index-templates

2020012518231496.png

我们可以定义一些index template,这样template会自动应用到根据匹配规则( based on an index pattern)匹配到的新创建的索引上去。


template中可以包含settings和mappings,还可以包含一个pattern,决定了template会被应用到哪些index上。


而且template仅仅在index创建的时候会被应用,修改template,是不会对已有的index产生影响的。


4.1 新建/更新模板

语法:

PUT /_template/<index-template>

创建或者更新模板

curl -XPUT 'http://elasticsearch02:9200/_template/template_access_log?pretty' -d '
{
  "template": "access-log-*",
  "settings": {
    "number_of_shards": 2
  },
  "mappings": {
    "log": {
      "_source": {
        "enabled": false
      },
      "properties": {
        "host_name": {
          "type": "keyword"
        },
        "created_at": {
          "type": "date",
          "format": "EEE MMM dd HH:mm:ss Z YYYY"
        }
      }
    }
  },
  "aliases" : {
      "access-log" : {}
  }
}'


20200125213431358.png

4.2 删除模板

curl -XDELETE 'http://elasticsearch02:9200/_template/template_access_log?pretty'
# 删除模板
DELETE _template/template_1

返回

{
  "acknowledged": true
}


4.3 查看模板

curl -XGET 'http://elasticsearch02:9200/_template/template_access_log?pretty'


# 查看所有的模板 
GET _template
# 查看特定的模板 
GET _template/template_1


20200126094113153.png

4.4 使用模板创建索引

curl -XPUT 'http://elasticsearch02:9200/access-log-01?pretty'

查看索引, 观察模板是否被自动的关联到了匹配的模板上了。

curl -XGET 'http://elasticsearch02:9200/access-log-01?pretty'


# 新建索引 匹配模板的index_patterns
PUT test
GET test/_mapping


20200126094033248.png


4.5 模板的使用场景


index template使用场景: 举个例子你可能会经常创建不同的索引,比如说商品,分成了多种,每个商品种类的数据都很大,可能就是说,一个商品种类一个索引,但是每个商品索引的设置是差不多的,所以干脆可以搞一个商品索引模板,然后每次新建一个商品种类索引,直接绑定到模板,引用相关的设置。


简言之,将公共的东西抽取到模板中,省去了一遍一遍设置的麻烦。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
60 5
|
1月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
57 3
|
2月前
|
存储 负载均衡 Java
Elasticsearch集群面试系列文章一
【9月更文挑战第9天】Elasticsearch(简称ES)是一种基于Lucene构建的分布式搜索和分析引擎,广泛用于全文搜索、结构化搜索、分析以及日志实时分析等场景。
105 7
|
7天前
|
存储 监控 安全
Elasticsearch 集群
【11月更文挑战第3天】
83 54
|
3天前
|
监控 API 索引
Elasticsearch集群健康检查
【11月更文挑战第4天】
16 3
|
7天前
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
24 4
|
19天前
|
测试技术 API 开发工具
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
33 8
|
1月前
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
78 3
|
1月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
41 4
|
2月前
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步