Elasticsearch利用kibana调整索引mapping结构

Posted 好好生活_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch利用kibana调整索引mapping结构相关的知识,希望对你有一定的参考价值。

引言

在初次创建索引后,索引结构一般都固定不变,但也难免会遇到需求更改而索引结构也需要有对应的调整。本篇博客将介绍如何利用kibana新增字段,并且初始化值。

查看索引mapping结构

首先,我们可以先通过kibana使用以下API查看某一索引的结构:
GET /'index_name'/'index_type'/_mapping 
如果对kibana使用API有疑问,可以查看博客kibana安装与使用教程
注:API中的index_name和index_type为常量,对应索引名和索引类型。

修改索引mapping结构

一、新增字段

如果是新增字段,可以直接使用以下API:
PUT 'index_name'/_mapping/'index_type'

  "properties": 
    "field_name":
        "type": "long"
    
  

使用PUT请求,field_name为对应新增字段的名称,type为该字段的类型,如long、keyword等。

新增字段赋值

字段增加之后,我们可能需要初始化该字段的值,API如下:
POST /'index_name'/'index_type'/_update_by_query

    "query": 
        "match_all": 
    ,
    "script": 
        "source": "if (ctx._source.type== null) ctx._source.type= 0"
    

通过以上方法,我们可以根据查询条件更新字段的值。

二、修改字段

由于Elasticsearch底层使用了lucene的原因,不支持对mapping的修改,可使用索引重建的方式,步骤如下:
1. 创建索引idx_v1并添加数据
#创建索引v1
PUT /idx_v1
#创建索引v1mapping结构
POST /idx_v1/_doc/_mapping

  "properties": 
    "id": 
      "type": "long"
    ,
    "name": 
      "type": "text"
    
  

#给索引添加别名
POST /_aliases

    "actions": [
         "add": 
            "alias": "idx_alias",
            "index": "idx_v1"
        
    ]

#索引v1添加数据
POST idx_v1/_doc

  "id":1283239366077513729,
  "name":"天天"

#查询v1mapping结构
GET /idx_v1/_doc/_mapping
现在想将v1中的id字段类型修改为keyword类型,我们可以新建一个索引,mapping结构id字段为keyword。
2. 创建索引idx_v2
#创建索引v2
PUT /idx_v2
#创建索引mapping结构
POST /idx_v2/_doc/_mapping

  "properties": 
    "id": 
      "type": "keyword"
    ,
    "name": 
      "type": "text"
    
  

3. 使用reindex API,将旧索引数据导入新索引
POST _reindex

  "source": 
    "index": "idx_v1",
    "type": "_doc"

  ,
  "dest": 
    "index": "idx_v2",
    "type": "_doc"
  

4. 给新索引v2添加别名
POST /_aliases

    "actions": [
         "add": 
            "alias": "idx_alias",
            "index": "idx_v2"
        
    ]

5. 将旧索引别名添加迁移到新索引请求:
POST /_aliases

    "actions" : [
         "remove" : 
           "index" : "idx_v1", "alias" : "item_alias" 
        ,
         "add" : 
           "index" : "idx_v2", "alias" : "item_alias" 
        
    ]

6. 删除旧索引v1
DELETE /idx_v1

总结

修改索引mapping结构操作还是比较复杂的,所以在建立索引前需要考虑好mapping结构,以免引起不必要的麻烦。

以上是关于Elasticsearch利用kibana调整索引mapping结构的主要内容,如果未能解决你的问题,请参考以下文章

利用kibana学习 elasticsearch restful api (DSL)

利用kibana插件对Elasticsearch查询

1分钟系列-Kibana 简介与数据探索

Elasticsearch unassigned shard

kibana基础操作

使用 kibana 或 Elasticsearch 本身将保留天数设置为 Elasticsearch 索引