ElasticSearch使用纪要

一、es索引的增删改查方法

1、查询索引

get请求
http://地址/索引/类型/_mapping
无需参数

在这里插入图片描述

2、删除索引

delete请求
http://地址/索引

在这里插入图片描述

3、创建索引

需要 “新建索引”——>“添加mapping” 两步(我目前只知道这一种方法)。

第一步,先在脚本插件新建索引
在这里插入图片描述
第二步,为新建索引创建Mapping(即发设置字段参数的请求)
在这里插入图片描述
因为参数大部分与删除前的索引相同,只有个别地方需要修改;所以,我在删除旧索引之前,复制了mapping中的参数、做了一点修改,然后在设置新索引mapping这里粘贴上去即可。

4、修改索引(修改字段类型)

1)思路

es不能直接修改索引字段类型,需要删除调新建,具体方法如下

1. 创建一个中间索引
2. 向中间索引备份源索引的数据(mapping)
3. 查询确认数据是否copy过去
4. 删除有问题的索引
5. 重新创建同名的索引(★字段类型修改正确★)
6. 从中间索引还原到源索引的数据
7. 删除中间索引

2)具体执行

a、实例场景:Es报MapperParsingException异常

线上功能报错,一看日志是往es中添加数据报错,错误日志如下:

org.elasticsearch.index.mapper.MapperParsingException: failed to parse field [categoryId] of type [integer] in document with id '1628993540560302081'
...
Caused by: java.io.IOException: Numeric value (1621025777837514753) out of range of int

说是数据中有个字段类型转换错误,一查es脚本工具,果然生产es索引中categoryId这个字段是integer类型,而实际是long类型。
我这次遇到问题的es索引中没有旧数据,所以只要把字段类型错的索引删除,然后新建同名索引(字段类型改正确)

b、执行前备份

因为我的旧索引中没有数据,所以可以直接删除、新增;
但是很多时候,在执行删除前需要备份之前的参数。
下面介绍一种执行前备份参数的具体方法:

# 1. 创建一个中间索引
#创建索引
PUT demo_metric_1/
 
# 创建Mapping
POST demo_metric_1/type/_mapping
{  
    "type": {
      "properties": {        
		"log_time_date": {
          "type": "date",
          "format": "epoch_millis"
        },
        .....        
      }
    } 
}
 
 
# 2. 向中间索引备份源索引的数据
 
# 重建索引
POST _reindex
{
  "source": {
    "index": "demo_metric"
  },
  "dest": {
    "index": "demo_metric_1"
  }
}
 
 
# 3.查询确认数据是否copy过去
GET /demo_metric/type/_search
 
GET /demo_metric_1/type/_search
 
 
# 4.删除有问题的索引
# 删除有问题的索引
DELETE demo_metric
 
 
# 5.重新创建同名的索引(★字段类型修改正确★)
#创建索引
PUT demo_metric/
 
# 创建Mapping
POST demo_metric/type/_mapping
{  
    "type": {
      "properties": {        
		"log_time_date": {
          "type": "date",
          "format": "epoch_millis"
        },
        .....        
      }
    } 
}
 
 
# 6. 从中间索引还原到源索引的数据
# 重建索引
POST _reindex
{
  "source": {
    "index": "demo_metric_1"
  },
  "dest": {
    "index": "demo_metric"
  }
}
 
 
# 7. 删除中间索引
DELETE demo_metric_1
c、删除旧索引

可以通过es脚本插件的删除按钮删除
在这里插入图片描述
也可以发请求删除,参考1.2删除索引;

c、重新创建同名的索引(★字段类型修改正确★)

参考1.3创建索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值