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创建索引

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Elasticsearch SQL 插件,您需要先确保您已经安装了 Elasticsearch 7.1.1 版本。然后,按照以下步骤进行操作: 1. 安装 Elasticsearch SQL 插件: - 打开终端或命令提示符窗口。 - 运行以下命令安装 Elasticsearch SQL 插件: ``` ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/7.1.1.0/elasticsearch-sql-7.1.1.0.zip ``` - 安装完成后,重启 Elasticsearch 以使插件生效。 2. 使用 Elasticsearch SQL: - 打开终端或命令提示符窗口。 - 进入 Elasticsearch 的安装目录。 - 运行以下命令以启动 Elasticsearch SQL 查询: ``` ./bin/elasticsearch-sql-cli ``` - 您将进入 Elasticsearch SQL 的命令行界面。 - 现在,您可以开始使用 SQL 语法来查询 Elasticsearch 数据。 例如,您可以运行以下命令来执行一个简单的 SELECT 查询: ``` SELECT * FROM your_index_name WHERE your_field_name = 'your_value' ``` 注意:在上述查询中,`your_index_name` 是您要查询的索引名称,`your_field_name` 是您要查询的字段名称,`your_value` 是您要匹配的字段值。 这样,您就可以使用 Elasticsearch SQL 插件来执行 SQL 查询并检索 Elasticsearch 中的数据了。请记住,Elasticsearch SQL 插件提供了一种方便的方式来使用 SQL 语法进行查询,但它可能不适用于所有类型的查询,特别是复杂的查询。因此,在使用插件时,请确保您了解其使用限制和适用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值