【ElasticSearch】01 CRUD操作
1、资料:
ES官网最新版本下载地址:
https://www.elastic.co/cn/downloads/elasticsearch
历史版本下载:
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-16-0
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-0
2、参考教程:
# 尚硅谷 7.8.X
https://www.bilibili.com/video/BV1hh411D7sb # 狂神 7.6.x
https://www.bilibili.com/video/BV17a4y1x7zq # 尚学堂 7.4.2
https://www.bilibili.com/video/BV1x54y15775 # 黑马 7.4.0
https://www.bilibili.com/video/BV1Sy4y1G7LL
3、安装:
入门暂时不涉及Linux及集群部署问题,快速上手API
直接在官网上先下载windows平台的压缩包,解压即可
elasticsearch-7.16.3-windows-x86_64.zip
4、启动ElasticSearch:
E:\elasticsearch-7.16.3\bin\elasticsearch.bat
双击脚本文件启动ES
访问地址:
http://localhost:9200/
展示下面信息说明运行正常
{
"name" : "DESKTOP-VA4SKMT",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "KH3taZdhQ5KqYfMJQoyZDQ",
"version" : {
"number" : "7.16.3",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "4e6e4eab2297e949ec994e688dad46290d018022",
"build_date" : "2022-01-06T23:43:02.825887787Z",
"build_snapshot" : false,
"lucene_version" : "8.10.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
5、索引操作
一、CREATE INDEX 创建索引:
# PUT
http://localhost:9200/索引名称
# 案例
http://localhost:9200/student
索引创建成功:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "student"
}
索引创建失败,索引已经存在
{
"error": {
"root_cause": [
{
"type": "resource_already_exists_exception",
"reason": "index [student/FXObUphUQP65KZEJQk7TgQ] already exists",
"index_uuid": "FXObUphUQP65KZEJQk7TgQ",
"index": "student"
}
],
"type": "resource_already_exists_exception",
"reason": "index [student/FXObUphUQP65KZEJQk7TgQ] already exists",
"index_uuid": "FXObUphUQP65KZEJQk7TgQ",
"index": "student"
},
"status": 400
}
二、DELETE INDEX 删除索引
# DELETE
http://localhost:9200/索引名称
# 案例
http://localhost:9200/student
索引删除成功:
{
"acknowledged": true
}
索引删除失败,不存在该索引:
{
"error": {
"root_cause": [
{
"type": "index_not_found_exception",
"reason": "no such index [student]",
"resource.type": "index_or_alias",
"resource.id": "student",
"index_uuid": "_na_",
"index": "student"
}
],
"type": "index_not_found_exception",
"reason": "no such index [student]",
"resource.type": "index_or_alias",
"resource.id": "student",
"index_uuid": "_na_",
"index": "student"
},
"status": 404
}
三、GET INDEX INFO 查看指定索引信息
# GET
http://localhost:9200/索引名称
响应该索引的所有信息
{
"student": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": "1",
"provided_name": "student",
"creation_date": "1643182895035",
"number_of_replicas": "1",
"uuid": "KmLC3oT9Te2lUmOQVf8iXw",
"version": {
"created": "7160399"
}
}
}
}
}
如果索引不存在则报错:
{
"error": {
"root_cause": [
{
"type": "index_not_found_exception",
"reason": "no such index [student3]",
"resource.type": "index_or_alias",
"resource.id": "student3",
"index_uuid": "_na_",
"index": "student3"
}
],
"type": "index_not_found_exception",
"reason": "no such index [student3]",
"resource.type": "index_or_alias",
"resource.id": "student3",
"index_uuid": "_na_",
"index": "student3"
},
"status": 404
}
四、INDEX LIST 查看所有索引
# GET
http://localhost:9200/_cat/indices?v
v参数表示展示表头,下面展示了所有的索引
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .geoip_databases SHVb70kCSJqFhkKIUNyV4g 1 0 42 37 43mb 43mb
yellow open student KmLC3oT9Te2lUmOQVf8iXw 1 1 0 0 226b 226b
yellow open student1 6qudU33pT5C5-6CDdeFRbw 1 1 0 0 226b 226b
yellow open employee3 Fq3VTWk3Q0eT5iEbYsZXIA 1 1 0 0 226b 226b
yellow open employee IihIiOzbR8-44mL8qeiDpw 1 1 2 0 17.7kb 17.7kb
yellow open employee2 vIHhlBnDRYuWw-B3OYB5cA 1 1 0 0 226b 226b
6、文档操作
一、创建文档 CREATE DOC
# POST
http://localhost:9200/索引名/_doc # JSON 参数
{ "name" : "Cloud9", "gender" : "male", "age" : 24 }
案例:
文档的主键是ES自动生成的,要查询该文档则需要通过id或者文档的属性作为条件
# POST
http://localhost:9200/student/_doc # 响应
{
"_index": "student",
"_type": "_doc",
"_id": "ui1dlX4BrIYsUbCa81Wh",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
二、 CREATE & UPDATE DOC 创建/修改文档
创建或者修改时,指定文档的ID(自定义)
# POST / PUT 两种请求都支持
http://localhost:9200/索引名/_doc/文档ID # JSON参数
{ "name" : "Cloud8", "gender" : "male", "age" : 24 }
案例:
# POST
http://localhost:9200/student/_doc/1001 # JSON参数
{ "name" : "Cloud9", "gender" : "male", "age" : 24 } # 首次创建
{
"_index": "student",
"_type": "_doc",
"_id": "1001",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
# 重复请求,将变成更新
{
"_index": "student",
"_type": "_doc",
"_id": "1001",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 2,
"_primary_term": 1
}
更新附带校验操作
# POST
# 注意这个操作只能POST请求,地址附加后缀 /_update
# JSON参数需要包括在doc属性种
http://127.0.0.1:9200/索引名/_doc/文档ID/_update # JSON
{
"doc": {
"key1": "value1",
"key2": "value2",
"key3": "value3",
}
}
案例:
# POST
http://127.0.0.1:9200/student/_doc/1005/_update # JSON
{
"doc": {
"name": "zhangsan2",
"nickname": "zhangsan2",
"sex": "女",
"age": 30
}
} # 响应结果
{
"_index": "student",
"_type": "_doc",
"_id": "1005",
"_version": 2,
"result": "noop",
"_shards": {
"total": 0,
"successful": 0,
"failed": 0
},
"_seq_no": 7,
"_primary_term": 1
}
三、GET DOC BY ID 查看文档
# GET
http://localhost:9200/student/_doc/1001
案例:
# GET
http://localhost:9200/student/_doc/1002 # 查询成功
{
"_index": "student",
"_type": "_doc",
"_id": "1002",
"_version": 2,
"_seq_no": 5,
"_primary_term": 1,
"found": true,
"_source": {
"name": "Cloud9",
"gender": "male",
"age": 24
}
} # 查询未找到
{
"_index": "student",
"_type": "_doc",
"_id": "1003",
"found": false
}
四、DELETE DOC 删除文档
# DELETE
http://127.0.0.1:9200/索引名/_doc/文档ID
案例:
# DELETE
http://127.0.0.1:9200/student/_doc/1005 # 删除成功
{
"_index": "student",
"_type": "_doc",
"_id": "1005",
"_version": 3,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 8,
"_primary_term": 1
}
# 删除失败 文档不存在
{
"_index": "student",
"_type": "_doc",
"_id": "1005",
"_version": 4,
"result": "not_found",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 9,
"_primary_term": 1
}
7、映射操作
一、给指定索引创建映射:
# PUT
http://127.0.0.1:9200/索引名/_mapping
# JSON参数
{
"properties": {
"key1": {
"type": "text",
"index": false
},
"key2": {
"type": "boolean",
"index": false
},
"key3": {
"type": "long"
}
}
}
映射设定支持的K键类型:
Text
Keyword
Long
Integer
Short
Byte
Double
Float
Half Float
Boolean
Date
Binary
二、查看映射:
# GET
http://127.0.0.1:9200/索引名/_mapping
案例:
# GET
http://127.0.0.1:9200/student/_mapping # 结果
{
"student": {
"mappings": {
"properties": {
"age": {
"type": "long"
},
"gender": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"nickname": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"sex": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
三、创建索引时直接设定映射
# PUT
# 和第一个差不多,没有 /_mapping路径要求
http://127.0.0.1:9200/索引名 # JSON参数
{
"properties": {
"key1": {
"type": "text",
"index": false
},
"key2": {
"type": "boolean",
"index": false
},
"key3": {
"type": "long"
}
}
}
【ElasticSearch】01 CRUD操作的更多相关文章
- ElasticSearch基础+文档CRUD操作
本篇博客是上一篇的延续,主要用来将年前学习ES的知识点做一个回顾,方便日后进行复习和汇总!因为近期项目中使用ES出现了点小问题,因此在这里做一个详细的汇总! [01]全文检索和Lucene (1)全文 ...
- 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查
第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...
- Elasticsearch技术解析与实战(二)文档的CRUD操作
启动Elasticsearch和kibana 访问Elasticsearch:http://localhost:9200/?pretty 访问kibana:http://localhost:5601 ...
- 四十一 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查
elasticsearch(搜索引擎)基本的索引和文档CRUD操作 也就是基本的索引和文档.增.删.改.查.操作 注意:以下操作都是在kibana里操作的 elasticsearch(搜索引擎)都是基 ...
- elasticsearch入门(简单的crud操作)
记录一下,elasticsearch从创建索引到插入数据的一个crud操作. 一.创建索引 curl -XPUT "http://192.168.99.1:9200/productindex ...
- Elasticsearch的CRUD:REST与Java API
CRUD(Create, Retrieve, Update, Delete)是数据库系统的四种基本操作,分别表示创建.查询.更改.删除,俗称"增删改查".Elasticsearch ...
- ElasticSearch第二步-CRUD之Sense
ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...
- 【JAVA与DOM4J实现对XML文档的CRUD操作】
一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...
- 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作
spring boot 2.X集成ES 进行CRUD操作 完整版 内容包括: ============================================================ ...
- SpringMVC 使用 RESTful 架构实现 CRUD 操作
软件152 余建强 源码下载:http://download.csdn.net/detail/qq_35318576/9826210 1 使用框架 SpringMVC.Maven.Ajax.JSTL. ...
随机推荐
- nodejs koa框架下载和导入excel
ac.js const service = require("../service/model.service"); const urlencode = require(" ...
- map数据类型
MAP数据类型是一个类似于对象的数据类型 大型项目中会经常使用 通过 构造函数来定义MAP数据类型 con ...
- OpenAI正式发布第一个官方.NET版本库的测试版
尽管 Microsoft 和 OpenAI 长期以来一直是紧密相连的合作伙伴,但他们现在才开始为 .NET 开发人员发布官方 OpenAI 库,加入现有的社区库.这项工作的第一个测试版是支持 .NET ...
- asp.net core mvc 使用quartz
参照了:https://www.cnblogs.com/dangzhensheng/p/10496278.html 1.新建任务类ReportJob.cs,这个类里就是具体任务了. using Qua ...
- Prometheus 聚合查询的两个方案
问题背景 多个 Prometheus 集群或者多个 VictoriaMetrics 集群,在 Grafana 和夜莺里通常需要创建多个不同的数据源,这也就意味着,数据没法聚合查询,比如统一做一下 su ...
- 1004 成绩排名 PAT Basic Level
我的个人博客地址 azoux's blog 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 ...
- .Net8 AddKeyedScoped键值key注册服务异常
异常描述:This service descriptor is keyed. Your service provider may not support keyed services. 场景:.Net ...
- C++判断字符串是否相等
话不多说,上代码 bool str_same(char *p1, char *p2) { if (strcmp(p1, p2)) return 0; else for (int i = 0; i &l ...
- git连接到https服务器时出现“gnutls_handshake() failed”
git连接到https服务器时出现"错误: gnutls_handshake()失败" 问题描述 当我尝试使用git连接到任何HTTPS服务器时(例如git clone),它会出现 ...
- 在Linux中使用crontab
背景 虽然不是专业运维,但是在嵌入式开发中还是需要懂一点的.部门内部搞服务器最厉害的就是我了,汗. 参考: https://blog.csdn.net/longgeaisisi/article/det ...