使用kibana对es进行增删改查

本文介绍了如何在Elasticsearch中创建索引、设置分片和副本数,以及如何使用POST和PUT进行数据插入与更新,包括部分更新和根据条件删除文档。此外,还讲解了match、term和match_phrase查询方法的使用。
摘要由CSDN通过智能技术生成

前言

最近由于需要频繁的在es修改、删除数据,博主特意将一些简单的增删改查指令都记录了下来。

话不多说,直接上图!

创建索引

put my_index
{
	"settings": {
		"number_of_replicas": 0
	},
	"mappings": {
		"properties": {
			"id": {
				"type": "integer"
			},
			"name": {
				"type": "text",
				"fields": {
					"keyword": {
						"type": "keyword",
						"ignore_above": 256
					}
				},
				"analyzer": "ik_max_word"
			},
			"create_time": {
				"type": "date",
				"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
			}
		}
	}
}

number_of_shards: 分片数,默认是1,索引数据量太大时应该增加分片数量

number_of_replicas: 副本数,将分片复制(副本数)份,复制的副本放在其他节点用于故障恢复,单节点部署设置为0,否则索引的health状态会是yellow

analyzer: 分词器,ik_max_word最细粒度分词 ik_smart较粗粒度

插入、更新

  • post和put都可以插入和更新数据
  • post可以不指定id,put必须指定id
  • 指定id时,若不存在则插入;存在则更新,更新时都会覆盖原来的值,本次未赋值的字段被空值覆盖

post

在使用post时,如果不指定id,则为新增;若指定id,则为更新

不指定id
post my_index/_doc
{
  "name": "第一条测试数据",
  "create_time": "2023-12-18 16:26:13",
  "id":1
}

在这里插入图片描述

可以看出此处es的_id和我们指定的id字段不是同一个,_id是es自动生成的一个几乎不会重复的字段

我们也可以在插入时指定id,指定id时,es会先查询是否已存在该id的文档,进而插入或更新

指定id
  • 若不存在此id的文档,则插入
post my_index/_doc/2
{
  "name": "第二条测试数据",
  "create_time": "2023-12-18 16:26:13",
  "id":2
}
  • 若存在此id的文档,则更新数据
post my_index/_doc/K-MIfIwBG5ApDfZZ9uTJ
{
  "create_time": "2023-12-18 16:26:13",
  "id":1
}

在这里插入图片描述
可以看到由于更新时没有给name赋值,导致name被空值覆盖。

put

put和post的插入与更新逻辑是一样的,只是put必须指定id

PUT my_index/_doc/2
{
  "name":"第二条测试数据",
  "id" : 1
}

部分更新

上边的post和put的更新命令是更新整个文档,如果我们只想改其中几个字段,又不想把不需要修改的值重新写一次,那可以用下述命令

post my_index/_update/2
{
  "doc":{
    "name":"第二条测试数据的name被修改了"
  }
}

根据条件删除

删除id为2的文档

POST my_index/_delete_by_query
{
  "query":{
    "match":{
      "id":2
    }
  }
}

全部删除

POST my_index/_delete_by_query
{
  "query":{
    "match_all":{}
  }
}

数据查询

这里简单介绍一下match、term、match_phrase的用法

  • match:对要查询的字段和关键词分词并匹配
  • term:对要查询的字段与我们的关键词进行精确匹配
  • match_phrase: 对要查询的字段和关键词分词、并严格按照分词的顺序进行匹配
    例如现在有一个文档是 我爱中国,当输入的关键词是“中国爱我”时,match匹配成功,match_phrase匹配失败
get my_index/_search
{
  "query":{
    "match":{
      "name": "第二"
    }
  },
  "from": 0,
  "size": 20
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值