elasticsearch实现CRUD操作教程

本文详细介绍Elasticsearch 6.2.2版本下索引管理、数据操作及查询技巧,包括索引创建、删除、结构变更,数据增删改查,以及多种查询方式如ID查询、模糊查询、短语查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本文是针对 elasticsearch 6.2.2版本
使用 postman 进行相关操作

简介

CRUD(Create, Retrieve, Update, Delete)是数据库系统的四种基本操作,分别表示创建、查询、更改、删除,俗称“增删改查”。Elasticsearch作为NoSQL数据库(虽然ES是为搜索引擎而生的,但我更愿意将其看作带有强大文本搜索功能的NoSQL)。

elasticsearch 结构介绍

用Mysql这样的数据库存储就会容易想到建立一张User表,有balabala的字段等,在Elasticsearch里这就是一个文档,当然这个文档会属于一个User的类型,各种各样的类型存在于一个索引当中。这里有一份简易的将Elasticsearch和关系型数据术语对照表:

关系数据库      ⇒ 数据库        ⇒  表         ⇒ 行              ⇒ 列(Columns)
 
Elasticsearch  ⇒ 索引(Index)   ⇒ 类型(type)  ⇒ 文档(Docments)  ⇒ 字段(Fields)  

索引操作

(1)创建索引和表
PUT http://192.168.56.120:9200/mydemo
{
	"setting":{
		"index":{
			"number_of_shards":5,
			"number_of_replicas":1
		}
	},
	"mappings":{
		"userinfos":{
			"properties":{
				"userid":{
					"type":"integer"
				},
				"username":{
					"type":"text"
				},
				"birthday":{
					"type":"date",
					"format":"yyyy-MM-dd||yyyy-MM-dd HH:mm:ss"
				},
				"say":{
					"type":"text"
				},
				"jobtime":{
					"type":"integer"
				}
			}
		}
	}
}
(2)删除索引
DELETE http://ip:9200/索引名
(3)改变表结构
POST http://192.168.56.120:9200/mydemo/userinfos/_mapping

{
	"userinfos":{
		"properties":{
			"aliasName":{
				"type":"text"
			}
		}
	}
}

增加数据

POST http://192.168.56.120:9200/mydemo/userinfos/  //随机出id
{
	"aliasName":"峨眉师太",
	"username":"周芷若",
	"userid":1,
	"birthday":"1462-9-8",
	"say":"峨嵋剑法,九阴真经",
	"jobtime":18
}


http://192.168.56.120:9200/mydemo/userinfos/2     //数字是默认id
{
	"aliasName":"少林方丈",
	"username":"玄慈",
	"userid":2,
	"birthday":"1462-9-8",
	"say":"易筋经,少林达摩棍",
	"jobtime":68
}

修改数据

POST http://192.168.56.120:9200/mydemo/userinfos/1GHho24B-NsCrJJ68lSr/_update
// 1GHho24B-NsCrJJ68lSr 为id
{
	"doc":{
		"aliasName":"魔教教主",
		"username":"张无忌"
	}
}

删除数据

DELETE http://192.168.56.120:9200/mydemo/userinfos/1GHho24B-NsCrJJ68lSr
// 1GHho24B-NsCrJJ68lSr 为id

查询数据

(1)、ID 查询
GET http://192.168.56.120:9200/mydemo/userinfos/1WHio24B-NsCrJJ6a1TJ
(2)、简单查询
模糊查询
```bash
GET http://192.168.56.120:9200/mydemo/userinfos/_search

{
	"query":{
		"match":{
			"username":"玄"
		}
	}
}
短语查询
GET http://192.168.56.120:9200/dem/students/_search

{
	"query":{
		"match_phrase":{
			"skill":"java javascript"
		}
	}
}GET
多列查询
GET http://192.168.56.120:9200/dem/students/_search

{
	"query":{
		"multi_match":{
			"query":"java",
			"fields":["stuname","skill"]  // 分开的词汇是 or 关系
		}
	},
	"from":0,
	"size":1
}
分组聚合查询
{
	"aggs":{
		"group_by_age":{
			"terms":{
				"field":"stuage"
			}
		}
	}
}
分组聚合计算
{
	"aggs":{
		"group_by_age":{
			"avg":{
				"field":"stuage"
			}
		}
	}
}

{
	"aggs":{
		"group_by_age":{
			"stats":{
				"field":"stuage"
			}
		}
	}
}
Query String 查询【java 语法常用】
GET http://192.168.56.120:9200/dem/students/_search

{
	"query":{
		"query_string":{
			"fields":["skill"],
			"query":"java AND vue"  // 词汇是 and 关系 与
		}
	}
}

{
	"query":{
		"query_string":{
			"fields":["skill"],
			"query":"(NOT javascript) AND mysql"
		}
	}
}
范围查询
GET http://192.168.56.120:9200/dem/students/_search

{
	"query":{
		"range":{
			"stuage":{
				"gte":18,
				"lte":23
			}
		}
	}
}
(3)、Filter 查询
GET http://192.168.56.120:9200/dem/students/_search
{
	"query":{
		"bool":{
			"filter":{
				"term":{
					"stubir":"1997-3-6"
				}
			}
		}
	}
}
(4)、复合查询(should/must/must_not)

此方法5.0 版本后不支持多列查询

{
	"query":{
		"bool":{
			"should":[
				{
					"match":{
						"stuage":21
					}
				},
				{
					"match":{
						"stuage":21
					}
				}
			]
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值