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、映射操作

7版本开始,一个映射只属于一个索引的Type,默认Type为:_doc

一、给指定索引创建映射:

# 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操作的更多相关文章

  1. ElasticSearch基础+文档CRUD操作

    本篇博客是上一篇的延续,主要用来将年前学习ES的知识点做一个回顾,方便日后进行复习和汇总!因为近期项目中使用ES出现了点小问题,因此在这里做一个详细的汇总! [01]全文检索和Lucene (1)全文 ...

  2. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查

    第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...

  3. Elasticsearch技术解析与实战(二)文档的CRUD操作

    启动Elasticsearch和kibana 访问Elasticsearch:http://localhost:9200/?pretty 访问kibana:http://localhost:5601 ...

  4. 四十一 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查

    elasticsearch(搜索引擎)基本的索引和文档CRUD操作 也就是基本的索引和文档.增.删.改.查.操作 注意:以下操作都是在kibana里操作的 elasticsearch(搜索引擎)都是基 ...

  5. elasticsearch入门(简单的crud操作)

    记录一下,elasticsearch从创建索引到插入数据的一个crud操作. 一.创建索引 curl -XPUT "http://192.168.99.1:9200/productindex ...

  6. Elasticsearch的CRUD:REST与Java API

    CRUD(Create, Retrieve, Update, Delete)是数据库系统的四种基本操作,分别表示创建.查询.更改.删除,俗称"增删改查".Elasticsearch ...

  7. ElasticSearch第二步-CRUD之Sense

    ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...

  8. 【JAVA与DOM4J实现对XML文档的CRUD操作】

    一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...

  9. 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作

    spring boot 2.X集成ES 进行CRUD操作  完整版 内容包括: ============================================================ ...

  10. SpringMVC 使用 RESTful 架构实现 CRUD 操作

    软件152 余建强 源码下载:http://download.csdn.net/detail/qq_35318576/9826210 1 使用框架 SpringMVC.Maven.Ajax.JSTL. ...

随机推荐

  1. SELinux 基本原理

    首发公号:Rand_cs SELinux 基本原理 本文讲述 SELinux 保护安全的基本原理 安全检查顺序 不废话,直接先来看张图 当我们执行系统调用的时候,会首先对某些错误情况进行检查,如果失败 ...

  2. Vue 3与ESLint、Prettier:构建规范化的前端开发环境

    title: Vue 3与ESLint.Prettier:构建规范化的前端开发环境 date: 2024/6/11 updated: 2024/6/11 publisher: cmdragon exc ...

  3. k8s介绍

    k8s容器编排系统 k8S是谷歌几十年来研发的一套系统,更新了运维领域的玩法. 内容很多,先快速练习玩法,知道是什么就行. 具体[为什么]再花时间慢慢学吧! 0.参考资料 1. k8s能干什么 htt ...

  4. 如何生成war包

    pom.xml <packaging>war</packaging> 引入tomcat <dependency> <groupId>org.spring ...

  5. Spring AOP 中@Pointcut的用法(多个Pointcut)

    Spring AOP 中@Pointcut的用法(多个Pointcut) /** swagger切面,分开来写 **/ @Aspect @Component public class ApiOpera ...

  6. mysql时间字段新增和修改默认时间,删除字段

    mysql时间字段新增和修改默认时间,删除字段##新增字段ALTER TABLE tbl_test ADD COLUMN `create_time` DATETIME NULL DEFAULT CUR ...

  7. 【IEEE 出版】 第三届能源与电力系统国际学术会议 (ICEEPS 2024)

    [连续2届会后4-5个月EI检索,检索稳定!特邀院士.Fellow 报告!]第三届能源与电力系统国际学术会议 (ICEEPS 2024)以"创造更加柔性.智能的能源电力系统"为主题 ...

  8. kubernetes安装Prometheus

    安装 在目标集群上,执行如下命令: kubectl apply -f https://github.com/512team/dhorse/raw/main/conf/kubernetes-promet ...

  9. CSDN 大规模抓取 GitHub 上的项目到 GitCode,伪造开发者主页引公愤

    事件起因 CSDN旗下的GitCode最近因为一种极其不道德的行为引起了开发者的广泛愤怒和抗议.CSDN在没有通知或征求开发者同意的情况下,悄悄地将大量GitHub上的开源项目搬运到了其自己的GitC ...

  10. 【WPF】根据选项值显示不同的编辑控件(使用DataTemplateSelector)

    接了一个小杂毛项目,大概情形是这样的:ZWT先生开的店是卖拆片机的,Z先生不仅卖机器,还贴心地提供一项服务:可以根据顾客需要修改两个电机的转向和转速(机器厂家有给SDK的,但Z自己不会写程序).厂家有 ...