Elasticsearch增、删、改、查操作深入详解

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: Elasticsearch增、删、改、查操作深入详解

image.png点此链接看原视频

引言:

对于刚接触ES的童鞋,经常搞不明白ES的各个概念的含义。尤其对“索引”二字更是与关系型数据库混淆的不行。本文通过对比关系型数据库,将ES中常见的增、删、改、查操作进行图文呈现。能加深你对ES的理解。同时,也列举了kibana下的图形化展示。


ES Restful API GET、POST、PUT、DELETE、HEAD含义:

1)GET:获取请求对象的当前状态。

2)POST:改变对象的当前状态。

3)PUT:创建一个对象。

4)DELETE:销毁对象。

5)HEAD:请求获取对象的基础信息。


Mysql与Elasticsearch核心概念对比示意图

image.png

以上表为依据,

ES中的新建文档(在Index/type下)相当于Mysql中(在某Database的Table)下插入一行数据。


1、新建文档(类似mysql insert插入操作)

http://localhost:9200/blog/ariticle/1 put

{

"title":"New version of Elasticsearch released!",

"content":"Version 1.0 released today!",

"tags":["announce","elasticsearch","release"]

}

1

2

3

4

5

6

创建成功如下显示:


{


- "_index": "blog",

- "_type": "ariticle",

- "_id": "1 -d",

- "_version": 1,

- "_shards": {

   - "total": 2,

   - "successful": 1,

   - "failed": 0

- },

- "created": true


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

image.png

2、检索文档(类似mysql search 搜索select*操作)

http://localhost:9200/blog/ariticle/1/ GET


检索结果如下:


{


- "_index": "blog",

- "_type": "ariticle",

- "_id": "1",

- "_version": 1,

- "found": true,

- "_source": {

   - "title": "New version of Elasticsearch released!",

   - "content": "Version 1.0 released today!",

   - "tags": [

       - "announce"

       - ,

       - "elasticsearch"

       - ,

       - "release"

   - ]

- }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

如果未找到会提示:


{


- "_index": "blog",

- "_type": "ariticle",

- "_id": "11",

- "found": false


}

1

2

3

4

5

6

7

8

查询全部文档如下:

image.png

具体某个细节内容检索,

查询举例1:查询cotent列包含版本为1.0的信息。

http://localhost:9200/blog/

_search?pretty&q=content:1.0


{


- "took": 2,

- "timed_out": false,

- "_shards": {

   - "total": 5,

   - "successful": 5,

   - "failed": 0

- },

- "hits": {

   - "total": 1,

   - "max_score": 0.8784157,

   - "hits": [

       - {

           - "_index": "blog",

           - "_type": "ariticle",

           - "_id": "6",

           - "_score": 0.8784157,

           - "_source": {

               - "title": "deep Elasticsearch!",

               - "content": "Version 1.0!",

               - "tags": [

                   - "deep"

                   - ,

                   - "elasticsearch"

               - ]

           - }

       - }

   - ]

- }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

查询举例2:查询书名title中包含“enhance”字段的数据信息:

[root@5b9dbaaa1a ~]# curl -XGET 10.200.1.121:9200/blog/ariticle/_search?pretty -d ’


> { "query" : {

> "term" :

> {"title" : "enhance" }

> }

> }'

{

 "took" : 189,

 "timed_out" : false,

 "_shards" : {

 "total" : 5,

 "successful" : 5,

 "failed" : 0

 },

 "hits" : {

 "total" : 2,

 "max_score" : 0.8784157,

 "hits" : [ {

 "_index" : "blog",

 "_type" : "ariticle",

 "_id" : "4",

 "_score" : 0.8784157,

 "_source" : {

 "title" : "enhance Elasticsearch!",

 "content" : "Version 4.0!",

 "tags" : [ "enhance", "elasticsearch" ]

 }

 }, {

 "_index" : "blog",

 "_type" : "ariticle",

 "_id" : "5",

 "_score" : 0.15342641,

 "_source" : {

 "title" : "enhance Elasticsearch for university!",

 "content" : "Version 5.0!",

 "tags" : [ "enhance", "elasticsearch" ]

 }

 } ]

 }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

查询举例3:查询ID值为3,5,7的数据信息:

[root@5b9dbaaa148a ~]# curl -XGET 10.200.1.121:9200/blog/ariticle/_search?pretty -d ’


{ "query" : {

"terms" :

{"_id" : [ "3", "5", "7" ] }

}

}'

{

 "took" : 5,

 "timed_out" : false,

 "_shards" : {

 "total" : 5,

 "successful" : 5,

 "failed" : 0

 },

 "hits" : {

 "total" : 3,

 "max_score" : 0.19245009,

 "hits" : [ {

 "_index" : "blog",

 "_type" : "ariticle",

 "_id" : "5",

 "_score" : 0.19245009,

 "_source" : {

 "title" : "enhance Elasticsearch for university!",

 "content" : "Version 5.0!",

 "tags" : [ "enhance", "elasticsearch" ]

 }

 }, {

 "_index" : "blog",

 "_type" : "ariticle",

 "_id" : "7",

 "_score" : 0.19245009,

 "_source" : {

 "title" : "deep Elasticsearch for university!",

 "content" : "Version 2.0!",

 "tags" : [ "deep", "elasticsearch", "university" ]

 }

 }, {

 "_index" : "blog",

 "_type" : "ariticle",

 "_id" : "3",

 "_score" : 0.19245009,

 "_source" : {

 "title" : "init Elasticsearch for university!",

 "content" : "Version 3.0!",

 "tags" : [ "initialize", "elasticsearch" ]

 }

 } ]

 }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

3、更新文档(类似mysql update操作)

http://localhost:9200/blog/ariticle/1/_update/ POST

{“script”:"ctx._source.content = “new version 2.0 20160714"”}


更新后结果显示:

{undefined


“_index”: “blog”,

“_type”: “ariticle”,

“_id”: “1”,

“_version”: 2,

“_shards”: {

“total”: 2,

“successful”: 1,

“failed”: 0

}

}


查询&验证更新后结果:(对比可知,版本号已经更新完毕)

http://localhost:9200/blog/ariticle/1/


{


- "_index": "blog",

- "_type": "ariticle",

- "_id": "1",

- "_version": 2,

- "found": true,

- "_source": {

   - "title": "New version of Elasticsearch released!",

   - "content": "new version 2.0 20160714",

   - "tags": [

       - "announce"

       - ,

       - "elasticsearch"

       - ,

       - "release"

   - ]

- }


}

`![这里写图片描述](https://img-blog.csdn.net/20160717132407353)``


注意更新文档需要在elasticsearch_win\config\elasticsearch.yml下新增以下内容:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

script.groovy.sandbox.enabled: true

script.engine.groovy.inline.search: on

script.engine.groovy.inline.update: on

script.inline: on

script.indexed: on

script.engine.groovy.inline.aggs: on

index.mapper.dynamic: true


4、删除文档(类似mysql delete操作)

http://localhost:9200/blog/ariticle/8/回结果


{


- "found": true,

- "_index": "blog",

- "_type": "ariticle",

- "_id": "8",

- "_version": 2,

- "_shards": {

   - "total": 2,

   - "successful": 1,

   - "failed": 0

- }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

image.png

5、Kibana可视化分析

##5.1、在索引blog上查询包含"university"字段的信息。image.png

##5.2、Kibana多维度分析image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
7月前
|
JSON 自然语言处理 Java
Java原生操作Elasticsearch
Java原生操作Elasticsearch
145 0
|
关系型数据库 MySQL 索引
ElasticSearch高级操作3
ElasticSearch高级操作3
126 0
|
自然语言处理 Java 索引
ElasticSearch高级操作2
ElasticSearch高级操作2
146 0
|
JSON 自然语言处理 数据挖掘
ElasticSearch高级操作1
ElasticSearch高级操作1
128 0
|
存储 自然语言处理 关系型数据库
Elasticsearch之Restful操作1
Elasticsearch之Restful操作
138 0
|
7月前
|
安全 大数据 API
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
299 0
|
6月前
|
JSON DataWorks 关系型数据库
DataWorks操作报错合集之同步Elasticsearch数据报错:Cat response did not contain a JSON Array,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
监控 搜索推荐 Go
万字详解!在 Go 语言中操作 ElasticSearch
本文档通过示例代码详细介绍了如何在Go应用中使用`olivere/elastic`库,涵盖了从连接到Elasticsearch、管理索引到执行复杂查询的整个流程。
120 0
|
7月前
|
Kubernetes 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在Kubernetes(k8s)中同步MySQL变更到Elasticsearch该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
安全 Java API
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
99 1