保持清醒,不断思考。

Mike lucis


  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 联系
  •     

© 2023 Mike lucis

Theme Typography by Makito

Proudly published with Hexo

备案号: 湘ICP备2021005917号-1

友情链接: Lonely's Bolg

ღゝ◡╹)ノ♡

ElasticSearch-CRUD

发布于 2021-06-30 BigData  ElasticSearch 

¶ ElasticSearch CRUD


logo

Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎,通过它我们可以构建出一个强大的全文搜索系统,解决诸如文章检索慢,商品检索慢、MySQL的like查询慢这样的问题.

Elasticsearch是基于hadoop创始人道哥的另一杰作Lucene实现的,速度非常快,核心是使用了倒排索引这样的结构。

环境版本:
ElasticSearch 7.11.1


ElasticSearch基本概念

“索引”这个名词在ElasticSearch中经常出现,对应到关系型数据库中就是“库”的概念。

将一个文档存储到一个“索引”(index,名词)中,也被称为“索引”(动词),这非常类似于 SQL 语句中的 INSERT 关键词,区别在于:当文档已存在时,新文档会替换旧文档。

索引中的可以包含多个“类型”(type),可以理解为关系型数据库中的“表”。

每个类型(type)都有自己的映射(mapping)或者结构定义,就像传统数据库表中的列一样。类型的映射(mapping)会告诉Elasticsearch不同的文档如何被索引


¶ 创建索引

1
2
3
4
5
6
7
8
9
10
11
PUT {{url}}/library/
{{HEAD}}

{
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
}

¶ 获取library索引设置信息

1
2

GET {{url}}/library/_settings

¶ 增

¶ 第一种(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
POST {{url}}/library/_doc
{{HEAD}}

{
"title": "Elasticsearch: The Definitive Guide",
"name": {
"first": "Zachary",
"last": "Tang"
},
"publish_date": "2015-02-06",
"price": "49.99"
}

备注: _id 为生成码

¶ 第二种(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
POST {{url}}/library/_create/2
{{HEAD}}

{
"title": "Elasticsearch Blueprints",
"name": {
"first": "Vineeth",
"last": "Mohan"
},
"publish_date": "2015-06-06",
"price": "35.99"
}

备注: _id 为插入id,不可重复

¶ 第三种(不推荐)

1
2
3
4
5
6
7
8
9
10
11
12
POST {{url}}/library/3
{{HEAD}}

{
"title": "Elasticsearch Test Book",
"name": {
"first": "Vineeth",
"last": "Mohan"
},
"publish_date": "2015-06-06",
"price": "77.99"
}

备注: 此方法生成 _type 类型会覆盖后续插入文档类型且与其他类型不可共存


¶ 删

删除索引 library

1
DELETE {{url}}/library/

删除索引内指定文档

1
DELETE {{url}}/library/_doc/[_id]

¶ 改

¶ 第一种

1
2
3
4
5
6
7
8
POST {{url}}/library/_doc/[_id]/_update
{{HEAD}}

{
"doc": {
"price": "199.99"
}
}

¶ 第二种

1
2
3
4
5
6
7
8
POST {{url}}/library/_update/[_id]
{{HEAD}}

{
"doc": {
"price": "49.98"
}
}

¶ 查

查询节点内全部文档

1
2
3
4
5
6
7
8
GET {{url}}/_search
{{HEAD}}

{
"query": {
"match_all": {}
}
}

列出library索引下所有文档

1
GET {{url}}/library/_search

获取指定 id 的文档

1
GET {{url}}/library/_doc/2

获取指定 id 的文档的指定字段

1
GET {{url}}/library/_doc/2?_source=price,publish_date

依据条件同时获取多个文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
GET {{url}}/_mget
{{HEAD}}

{
"docs": [
{
"_id": 3,
"_index": "library",
"_source": ["price", "title"]
},
{
"_id": "NeJ8m3oBzfvq0FGEkt20",
"_index": "library",
"_source": "name.first"
},
{
"_id": "4",
"_index": "library"
}
]
}
1
2
3
4
5
6
GET {{url}}/library/_mget
{{HEAD}}

{
"ids": [2, 3]
}

分享到 

 上一篇: ElasticSearch-索引映射 下一篇: LeetCode-求字符串全排列 

© 2023 Mike lucis

Theme Typography by Makito

Proudly published with Hexo

备案号: 湘ICP备2021005917号-1

友情链接: Lonely's Bolg

ღゝ◡╹)ノ♡