写在前面:我是「且听风吟」,目前是一名大数据开发工程师,热爱大数据开源技术,喜欢分享自己的所学所悟,现阶段正在从头梳理大数据体系的知识,以后将会把时间重点放在Spark和Flink上面。
如果你也对大数据感兴趣,希望在这个行业一展拳脚。欢迎关注我,我们一起努力,一起学习。博客地址:https://ropledata.blog.csdn.net
博客的名字来源于:且听风吟,静待花开。也符合我对技术的看法,想要真正掌握一门技术就需要厚积薄发的毅力,同时保持乐观的心态。
你只管努力,剩下的交给时间!
文章目录
一、前言
本文版本说明:
- ElasticSearch版本:7.7 (目前最新版)
- Kibana版本:7.7(目前最新版)
前面两篇文章咱们已经对Elasticsearch进行了精细的讲解,第一篇围绕Elasticsearch最新版进行了上万字的详细解析,相信看过的朋友对Elasticsearch及kibana等工具的极速安装配置印象深刻,也至少会对Elasticsearch有一个入门的掌握。第二篇主要围绕Elasticsearch的分词器进行讲解,并重点分析了ik中文分词器。
前文链接:
本文咱们将对Elasticsearch原生的RESTful API操作进行详尽的归纳分析,并会对复杂的常用查询知识点进行一一举例展开,重点会对DSL查询,聚合查询,批量操作等进行举例解析,并会提供一些Elasticsearch的使用技巧。相信学会了这些知识和技巧之后,以后在工作中不管应对多么复杂的场景,都可以得心应手,迅速的根据RESTful API写出完美的代码。好了,废话不多说,让我们开始吧!
注意:下文咱们把ElasticSearch简称为ES,对大家可能出现的疑问进行标红并解释,并会对容易混淆的地方加以声明。
二、索引操作
2.1、创建索引
比如咱们创建一个3副本2分片的名为ropledata的索引:
PUT /ropledata
{
"settings": {
"number_of_shards": "2",
"number_of_replicas": "3"
}
}
2.2、删除索引
和删除数据库一样,索引也是可以删除的,只需要执行如下命令就可以删除名为ropledata的索引:
DELETE /ropledata
2.3、修改索引副本数
这里要注意,索引的分片是不允许修改的,咱们只能修改索引的副本数量,比如想把副本数量修改为2个,只需要执行:
PUT ropledata/_settings
{
"number_of_replicas" : "2"
}
三、基础增删改查
3.1、插入数据
咱们平时进行基础的数据插入时,可以分为两种情况。一种是指定文档的id,一种是不指定。
注意:不指定的时候,ES会帮我们自动生成,不过不容易记忆,因此推荐指定id的方式插入数据。
疑问一:这里说的id是大括号里面的id吗?
不是的,这点容易混淆,这里包括后面查询或者删除时候用到的ID是创建文档时候指定或者ES自动生成的那个id,那个是唯一id,也就是下面示例里的101,而不是文档里面大括号的那个叫
id
字段!文档里面的文档字段是可以没有id
的。
-
不指定id
POST /ropledata/_doc/ { "id":1, "name":"且听_风吟", "page":"https://ropledata.blog.csdn.net", "say":"欢迎点赞,收藏,关注,一起学习" }
-
指定id
POST /ropledata/_doc/101 { "id":1, "name":"且听_风吟", "page":"https://ropledata.blog.csdn.net", "say":"欢迎点赞,收藏,关注,一起学习" }
3.2、删除数据
如果咱们想删除刚才创建的ropledata索引下的id为101的文档,可以使用如下命令:
DELETE /ropledata/_doc/101
3.3、更新数据
这里大家要特别注意,ES里的文档是不可以修改的,但是可以覆盖,所以ES修改数据本质上是对文档的覆盖。
ES对数据的修改分为全局更新和局部更新,下面咱们进行对比说明:
-
全局更新
PUT /ropledata/_doc/101 { "id":1, "name":"且听_风吟", "page":"https://ropledata.blog.csdn.net", "say":"再次欢迎点赞,收藏,关注,一起学习" }
然后大家可以多全局更新几次,会发现每次全局更新之后这个文档的
_version
都会发生改变!
-
局部更新