ES 7.8 速成笔记(上)
一、下载安装
下载地址: https://www.elastic.co/cn/downloads/elasticsearch (目前最新版本为7.8)
本文以mac版本为例,下载后解压即可。
终端命令行直接输入
./elasticsearch-7.8.0/bin/elasticsearch
即可启动,停止的话直接kill进程。
启动成功后,可以浏览http://localhost:9200/,如果看出类似下面的输出,就表示ok了
{
"name" : "lpt45125.local",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "W56eUV3PTemAWBwmEx7CcQ",
"version" : {
"number" : "7.8.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
"build_date" : "2020-06-14T19:35:50.234439Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
二、安装浏览器插件(可选)
google浏览器上建议安装2个插件:

有了这2个后,可以直观的在浏览器中用可视化方式管理ES。这2个插件的效果如下:

可以看出ES集群的健康状况,索引基本信息,包括浏览索引里的数据。

三、基本操作
3.1 创建索引
ES中的索引类似mysql中的table,是用来存储数据的基本单位。
PUT http://localhost:9200/cnblogs (注:cnblogs为要创建的索引名,可自行命名)
{
"mappings": {
"properties": {
"blog_id": {
"type": "long"
},
"blog_title": {
"type": "text"
},
"blog_category": {
"type": "keyword"
},
"blog_content": {
"type": "text"
}
}
},
"settings": {
"index": {
"number_of_shards": 2,
"number_of_replicas": 0
}
}
}
向ES集群的url,put上述json,就会创建一个cnblogs的索引(相当于在mysql中建了一张名为cnblogs的表),只不过ES在“建表”时,还可以指定分片数和副本数(类似于mysql中的分库分表个数,以及slave从库个数)。mappings.properties节点的内容,相当于表中的字段定义。ES中的字段类型,可以参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
3.2 删除索引
DELETE http://localhost:9200/cnblogs (注:cnblogs为要删除的索引名)
用postman之类的,发一条DELETE操作即可,更多索引相关的操作,可参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
3.3 添加单条记录
注:在index中创建的数据,准确来讲,ES中称为document。
POST http://localhost:9200/cnblogs/_doc
{
"blog_id":10000001,
"blog_title":"ES 7.8速成笔记",
"blog_content":"这是一篇关于ES的测试内容by 菩提树下的杨过",
"blog_category":"ES"
}
注1:上述语句执行后,该自动生成一个id,在返回结果中也能看到(即:下面的_id字段)
{
"_index": "cnblogs",
"_type": "_doc",
"_id": "RSYlZXMBw3XehDWN1Hbf",
"_version": 1,
"result": "created",
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
如果连续POST相同的内容,将生成多条内容一样的记录(即:重复记录)
当然,也可以在POST时,就指定id,比如:
http://localhost:9200/cnblogs/_doc/123 (最后的123即为id)
{
"_index": "cnblogs",
"_type": "_doc",
"_id": "123",
"_version": 1,
"result": "created",
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"_seq_no": 6,
"_primary_term": 1
}
返回结果也能看到"_id":"123",如果重复提交1次,ES会自动认为是对_id:123的记录做update,从返回结果也能看出来:
{
"_index": "cnblogs",
"_type": "_doc",
"_id": "123",
"_version": 2,
"result": "updated",
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"_seq_no": 7,
"_primary_term": 1
}
这时"result":"updated"已经不是再created,而且_version也变成了2。 更多创建文档的细节,可以参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html
3.4 批量添加记录
从mysql向ES迁移数据时,批量操作很有用,ES中称为bulk操作,比如我们要向cnblogs,1次添加多条记录:
POST http://localhost:9200/cnblogs/_bulk
{"index":{"_id":1}}
{"blog_title":"第1篇标题","blog_content":"测试内容1"}
{"index":{}}
{"blog_id":11,"blog_title":"第2篇标题","blog_content":"测试内容2","blog_category":"test"}
注1:基本格式为2行,第1行为元数据定义,即:{"index":{"_id":1}},第2行为紧接下来的操作,即:{"blog_title":"第1篇标题","blog_content":"测试内容1"}
注2:最后要有一个空行(即:\n)
操作完成后,可以看到多了2行数据:

更多bulk操作的细节,可参考https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
3.5 删除记录
删除单条记录 DELETE http://localhost:9200/cnblogs/_doc/1 (最后的值为_id的值)
当然也可以用刚学到的bulk操作,批量删除
PUT http://localhost:9200/cnblogs/_bulk
{"delete":{"_id":"mCZQZXMBw3XehDWN9HYJ"} }
{"delete":{"_id":"mSZSZXMBw3XehDWNSnZT"} }
{"delete":{"_id":"fiZHZXMBw3XehDWNkXYf"} }
{"delete":{"_id":"lyZQZXMBw3XehDWN9HYJ"} }
3.6 更新记录
更新操作跟mysql中的有很大区别,新手容易踩坑,先创建一条记录,方便后面讲解
POST http://localhost:9200/cnblogs/_doc/1
{
"blog_id":10000001,
"blog_title":"ES 7.8速成笔记",
"blog_content":"这是一篇关于ES的测试内容by 菩提树下的杨过",
"blog_category":"ES"
}
完成后,就能看到这条记录了

接下来,改下json内容,变成:
POST http://localhost:9200/cnblogs/_doc/1
{
"blog_title":"ES 7.8速成笔记(修改后的版本)"
}
返回结果:
{
"_index": "cnblogs",
"_type": "_doc",
"_id": "1",
"_version": 2,
"result": "updated",
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"_seq_no": 3,
"_primary_term": 1
}
提示更新完成,但是看记录,会发现其它字段值全被清掉了!

也就是说,如果我们只想更新某个字段的值,这样是不行的,必须先从ES中查出旧记录,然后所有字段值全赋上旧值,再更新指定字段,做全量提交才能达到预期,所以不推荐这种方法。
正确方法:
POST http://localhost:9200/cnblogs/_update/1
{
"doc": {
"blog_title": "ES 7.8速成笔记(新标题)"
}
}

update细节可参考https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
ES 7.8 速成笔记(上)的更多相关文章
- pyqt样式表语法笔记(上) --原创
pyqt样式表语法笔记(上) pyqt QSS python 样式表 因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方 ...
- Typora笔记上传到博客
Typora笔记上传到博客 Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版.它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML.PDF 以及本 ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Bootstrap学习笔记上(带源码)
阅读目录 排版 表单 网格系统 菜单.按钮 做好笔记方便日后查阅o(╯□╰)o bootstrap简介: ☑ 简单灵活可用于架构流行的用户界面和交互接口的html.css.javascript工具集 ...
- ES timeout 的一些笔记
首先解释下Timeout的作用: 比如,一个search,可能要10分钟才能搜完,那么,es就会等10分钟,直到结果出来.然而,在某些场景下,客户是等不了10分钟的.比如,淘宝搜东西的时候,客户宁可等 ...
- 《Windows核心编程》读书笔记 上
[C++]<Windows核心编程>读书笔记 这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对 ...
- 【C++ OpenGL ES 2.0编程笔记】8: 使用VBO和IBO绘制立方体 【转】
http://blog.csdn.net/kesalin/article/details/8351935 前言 本文介绍了OpenGL ES 2.0 中的顶点缓冲对象(VBO: Vertex Buff ...
- 初探内核之《Linux内核设计与实现》笔记上
内核简介 本篇简单介绍内核相关的基本概念. 主要内容: 单内核和微内核 内核版本号 1. 单内核和微内核 原理 优势 劣势 单内核 整个内核都在一个大内核地址空间上运行. 1. 简单.2. 高效 ...
- Zookeeper学习笔记(上)
Zookeeper学习笔记 本篇主要是一些基本的介绍和API的使用介绍, 有些只是记录了知识点,而没有完全在笔记中详细解释, 需要自行查找资料补充相关概念 主要参考了课程中的内容: Zookeeper ...
- geodjango七日学习笔记 (7.30整理本地笔记上传到网络)
第一天进行到现在,在开端的尾巴,想起来写一个学习笔记, 开发环境已搭好,用的是pycharm 环境是本机已有的interpreter python3.7 接下来要做的是新建一个geodjango项 ...
随机推荐
- 【SQL周周练】一句 SQL 如何帮助 5 个人买到电影院最好的座位?
大家好,我是"蒋点数分",多年以来一直从事数据分析工作.从今天开始,与大家持续分享关于数据分析的学习内容. 本文是第 3 篇,也是[SQL 周周练]系列的第 3 篇.该系列是挑选或 ...
- 【代码】Android|获取存储权限并创建、存储文件
版本:Android 11及以上,gradle 7.0以上,Android SDK > 29 获取存储权限 获取存储权限参考:Android 11 外部存储权限适配指南及方案,这篇文章直接翻到最 ...
- React-Native开发鸿蒙NEXT-蓝牙与图片处理的更正补充
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- Spring Boot 使用Apollo动态调整日志级别
摘要:在Spring Boot 项目中,借助Apollo动态修改配置的能力,结合Logback修改日志级别打印执行的SQL脚本. 综述 在生产环境偶现测试环境未发现的SQL查询BUG,但由于线上关 ...
- java springboot api接口导出xlsx(不使用easyexcle)
说明 在上一个文章里说了,用了阿里巴巴的easyexcle会导致项目build后的jar包体积增大20MB左右,所以想了个曲线救国的方式 其中的\t是制表符,即tab键,\n是回车 你可以自己试着这样 ...
- [译]MIT6.824_1.1分布式系统介绍——驱动力与挑战
这是6.824分布式系统课程,我会开始用简明的介绍我所认为的分布式系统. 分布式系统的核心是通过网络以完成一致任务的一组协作计算机. 因此我们将在本课程中重点介绍各种实例,例如大型网站的存储或MapR ...
- windows下大数据开发环境搭建(5)——Hive环境搭建
本文介绍如何在windows下搭建Hive开发环境,主要依赖的环境是Java和Hadoop,其他大部分工作主要是动手配置的工作,按照下面的介绍一步步操作即可完成搭建. 一.所需环境 1.Java:wi ...
- 推荐 3 种 .NET Windows 桌面应用程序自动更新解决方案
前言 在快速迭代的软件开发环境中,为 .NET Windows 桌面应用程序实现自动更新功能已成为提升用户体验和产品维护效率的关键功能.自动更新机制能够确保用户始终使用最新版本的应用,及时获取安全补丁 ...
- 物无弃材 —— 混闪机型部署 OceanBase 集群的探索
本文作者:联通研究院 邱永刚 首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 #数据库.#AI.#技术架构 相关的各种技术内容. ...
- ET框架运行初次--Mac启动dll程序(资源服务器)
Mac电脑不能直接运行ET携带的一些工具,比如文件服务器.于是必须手动写一个启动脚本 1:环境.必须按照.net core.终端运行 dotnet --version 2:写启动脚本. 在 ET-Br ...