zoukankan      html  css  js  c++  java
  • 更改elasticsearch中索引的mapping

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

    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类型了
    然后再打开该索引接收新数据的开关
    
  • 相关阅读:
    PHP7还没学明白,PHP8就要来了, 能有多快?
    Linux ab 压力测试
    大公司为什么都有API网关?没你想的那么简单!
    mac安装的vagrant访问laraval欢迎页面,执行时间15秒,安装nfs挂载点(亲测可行)
    PHP操作Elasticsearch
    PHP OpenSSL扩展 对称加密
    为什么 select count(*) from t,在 InnoDB 引擎中比 MyISAM 慢?
    Redis哨兵机制
    未来三五年,社会上什么工作会更吃香呢?这几方面
    自己的 Doxyfile 模板
  • 原文地址:https://www.cnblogs.com/uglyliu/p/12331964.html
Copyright © 2011-2022 走看看