• 更改elasticsearch中索引的mapping


    文章转载自:https://www.cnblogs.com/uglyliu/p/12331964.html

    昨天研发说在kibana中统计userid字段不出图,后来查到该字段显示冲突了,然后再查看了GET test/_mapping下该索引的mapping,发现userid是long类型的,而userid.keyword是string类型的,出现这种情况的根本原因是日志中这个字段存的是数值类型的值,改成字符串类型即可,由于急着用,我司上线一般是下午6点30上线,所以临时修改了下该字段的类型,步骤如下:

    整体步骤流程:
    1.先获取索引的mapping,修改成适合的字段类型
    2.然后创建一个自定义mapping的新索引
    3.把旧索引的数据reindex到新索引上(旧索引先停止新数据的写入)
    4.删除旧索引
    5.按照步骤2创建test索引
    6.把test-new索引的数据reindex到test索引上

    1、查看旧索引的mapping

    GET test/_mapping
    
    找到userid这个字段,修改类型为keyword,如下:
    {
    	"mappings": {
    		"doc": {
    			"properties": {
    				"@timestamp": {
    					"type": "date"
    				},
    				"@version": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"beat": {
    					"properties": {
    						"hostname": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						},
    						"name": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						},
    						"version": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						}
    					}
    				},
    				"code": {
    					"type": "long"
    				},
    				"dip": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"fields": {
    					"properties": {
    						"log_topic": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						}
    					}
    				},
    				"host": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"message": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"method": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"name": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"offset": {
    					"type": "long"
    				},
    				"referer": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"sip": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"source": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"tags": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"time": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"url": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"userid": {
    					"type": "keyword"   #修改此处
    				}
    			}
    		}
    	}
    }
    

    2、创建一个自定义mapping的新索引

    PUT test-new
    {
    	"mappings": {
    		"doc": {
    			"properties": {
    				"@timestamp": {
    					"type": "date"
    				},
    				"@version": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"beat": {
    					"properties": {
    						"hostname": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						},
    						"name": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						},
    						"version": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						}
    					}
    				},
    				"code": {
    					"type": "long"
    				},
    				"dip": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"fields": {
    					"properties": {
    						"log_topic": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						}
    					}
    				},
    				"host": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"message": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"method": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"name": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"offset": {
    					"type": "long"
    				},
    				"referer": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"sip": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"source": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"tags": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"time": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"url": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"userid": {
    					"type": "keyword"
    				}
    			}
    		}
    	}
    }
    

    3、把旧索引的数据reindex到新索引上

    注意,旧索引先停止新数据的写入

    POST _reindex
    {
      "source": {
        "index": "test"
      },
      "dest": {
        "index": "test-new"
      }
    }
    

    4、删除旧索引

    DELETE test
    

    5、按照步骤2创建test索引

    PUT test
    {
    	"mappings": {
    		"doc": {
    			"properties": {
    				"@timestamp": {
    					"type": "date"
    				},
    				"@version": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"beat": {
    					"properties": {
    						"hostname": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						},
    						"name": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						},
    						"version": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						}
    					}
    				},
    				"code": {
    					"type": "long"
    				},
    				"dip": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"fields": {
    					"properties": {
    						"log_topic": {
    							"type": "text",
    							"fields": {
    								"keyword": {
    									"type": "keyword",
    									"ignore_above": 256
    								}
    							}
    						}
    					}
    				},
    				"host": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"message": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"method": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"name": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"offset": {
    					"type": "long"
    				},
    				"referer": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"sip": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"source": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"tags": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"time": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"url": {
    					"type": "text",
    					"fields": {
    						"keyword": {
    							"type": "keyword",
    							"ignore_above": 256
    						}
    					}
    				},
    				"userid": {
    					"type": "keyword"
    				}
    			}
    		}
    	}
    }
    

    6、把test-new索引的数据reindex到test索引上

    POST _reindex
    {
      "source": {
        "index": "test-new"
      },
      "dest": {
        "index": "test"
      }
    }
    

    6、查看test索引的mapping

    GET test/_mapping,执行命令后,可以看到userid的字段类型为keyword类型了
    然后再打开该索引接收新数据的开关
    
  • 相关阅读:
    Linux
    python中元类
    POJ 1182 食物链
    POJ 1733 Parity game
    top 介绍
    周记 2014.8.31
    windows10配置python
    oracle执行update时卡死问题的解决办法
    An Easy Introduction to CUDA C and C++
    super()
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13140141.html
Copyright © 2020-2023  润新知