1、简介
对于数据库而言,都脱离不了对数据的增删改查,本文将从对索引创建、删除、修改配置等和对索引中doc数据进行增删改查操作。使用kibana的dev tools进行操作测试。具体Elasticsearch和Kibana安装和使用,参考之前的文章:Elasticsearch 的开源分析可视化工具--Kibana 安装 & 使用-CSDN博客。
2、Elasticsearch中相关名词解释
名词 | 说明 |
index(索引) | 相当于是数据库 |
mapping(映射) | 相当于数据库中表结构:字段名称、类型等 |
doc(行数据) | 相当于数据表中一条行数据 |
fields(字段) | 相当于数据表中的一列 |
settings(设置) | 设置索引的参数;例如:分片副本数等 |
3、索引操作
3.1、创建索引
# 1、基本语法
PUT <index_name>
# 2、创建索引指定主分片和副本数量
PUT test_es
{
"settings": {
"number_of_shards": 1, //主分片数量为 1
"number_of_replicas": 1 //每个主分片有一个副本
}
}
3.2、修改索引配置
使用 _setting 只能修改允许动态修改的配置项。
# 1、基本语法
PUT /<index_name>/_settings
# 2、修改副本数量为0
PUT test_es/_settings
{
"number_of_replicas": 0
}
3.2.1、静态配置
只能在创建索引时或在关闭状态的索引上设置。
重要的静态配置:number_of_shards:索引的主分片的个数,默认为 1,此设置只能在创建索引时设置。每个索引的分片的数量上限为 1024,这是一个安全限制,以防止意外创建索引,这些索引分片过多可能因资源分配而破坏集群的稳定性。export ES_JAVA_OPTS=“-Des.index. max_number_of_shards=128” 可以通过在属于集群的每个节点上指定系统属性来修改限制。
3.2.2、动态索引
可以使用 _setting 接口实时修改的配置项。
重要的动态配置
1)、number_of_replicas:每个主分片的副本数。默认为 1,允许配置为 0。
2)、refresh_interval:执行刷新操作的频率,默认为1s. 可以设置 -1 为禁用刷新。
3)、max_result_window:from + size 搜索此索引的最大值。默认为10000。
3.3、删除索引
DELETE <index_name>
3.4、判断索引是否存在
HEAD <index_name>
4、文档(doc)操作
4.1、文档操作类型
新增数据分为两种:create、index。
1)、create:如果在 PUT 数据的时候当前数据已经存在,则会返回失败(不存在则创建,存在则报错);
2)、index:如果在 PUT 数据的时候当前数据已经存在,则数据会被覆盖(可以是创建,也可以是全量替换)。
4.2、创建(create)
# 1、基础语法
PUT /<index_name>/_doc/<_id>?op_type=create
# 2、简化版本
PUT /<index_name>/_create/<_id>/
# 3、示例:
PUT test_es/_create/1 # PUT test_es/_doc/1?op_type=create
{
"id":1,
"name":"weilong"
}
4.3、索引(index) [创建或全量更新文档]
# 1、基础语法
PUT /<index_name>/_doc/<_id>?op_type=index
# 2、简化版本
PUT /<index_name>/_doc/<_id>
4.4、文档的增删改查
4.4.1、增(PUT和POST方式都可以)
PUT /<index_name>/_doc/<_id> # 默认是 index 类型
PUT /<index_name>/_create/<_id>
POST /<index_name>/_doc/<_id> # 不加<id>会随机生成id
POST /<index_name>/_create/<_id> # 不加<id>会随机生成id
4.4.2、删
DELETE /<index_name>/_doc/<_id>
4.4.3、改(修改局部字段或者数据)
# 1、第一种(如果需要更新的操作没有改变数据,返回resulrt为noop,否则为updated)
POST /<index_name>/_update/<_id>
{
"doc": {
"<field_name>": "<field_value>"
}
}
# 2、第二种(无论怎样都会更新,返回updated)
POST /<index_name>/_doc/<_id>
{
"<field_name>": "<field_value>"
}
4.4.4、查
# 1、查询
GET <index>/_doc/<_id>
# 2、判断文档是否存在
HEAD <index>/_doc/<_id>
# 3、仅查看元数据
GET <index>/_doc/<_id>?_source=false # 默认为true,全部数据返回
# 4、仅查看数据,不查看元数据
GET <index>/_source/<_id>
4.4.5、批量查询
可以针对不同的文档,指定不同的查询策略;也可以支持不同索引,不同策略。
# 1、基础语法(可以针对不同的文档,指定不同的查询策略)
GET /_mget
{
"docs": [
{
"_index": "<index_name>",
"_id": "<_id>"
},
{
"_index": "<index_name>",
"_id": "<_id>"
}
]
}
# 2、简化语法(针对固定索引)
GET <index_name>/_mget
{
"docs": [
{
"_id": "1",
"_source": false
},
{
"_id": "2",
"_source": true
}
]
}
5、总结
本文详细介绍Elasticsearch中相关名词解释,以及Elasticsearch索引使用和文档的增删改查,帮助大家快速掌握Elasticsearch的基础使用。
本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)