目录
目标
掌握ES基础语法,通过基础语法实现常见的业务功能。后续会在其他博文中补充高级语法,包括聚合、通配符,高亮等操作。
ES版本信息
7.17.5
索引属性信息
{
"索引名称" : {
"aliases" : {索引库的所有别名},
"mappings" : {映射类型,分为静态映射和动态映射。},
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "索引分配的数据层"
}
}
},
"number_of_shards" : "索引库的分片数量",
"provided_name" : "索引库名称",
"creation_date" : "创建时间",
"analysis" : {
"analyzer" : {
"default" : {
"type" : "设置的分词器"
}
}
},
"number_of_replicas" : "索引库的副本数量",
"uuid" : "oZDgdXWuSSSPaa9WKOYOMQ",
"version" : {
"created" : "7170599"
}
}
}
}
}
索引基本语法
查看全部索引
GET _cat/indices
创建索引
#创建一个名为my_db的索引。
PUT /my_db
#创建索引时指定副本数量,分片数量和分词器。
PUT /my_db
{
"settings": {
"analysis.analyzer.default.type":"ik_max_word",
"number_of_replicas": 1,
"number_of_shards": 1
}
}
查看索引是否存在
#查看索引是否存在
HEAD /my_db
删除索引
#删除一个索引
DELETE /my_db
删除索引下所有文档
#删除my_class索引下的所有文档(不删除索引)。
POST /my_class/_delete_by_query
{
"query": {
"match_all": {}
}
}
查看索引
#查看索引
GET /my_db
查看索引下所有文档
#查看my_class索引下所有的文档(分页展示,默认查询前十条数据。)。
GET /my_class/_search
#查看my_class索引下所有的文档(分页展示,从第2条开始,查询3条数据。)。
GET /my_class/_search?from=1&size=3
#查看my_class索引下所有的文档(分页展示),只返回姓名和性别字段。
GET /my_class/_search
{
"_source": [
"name","sex"
]
}
文档属性信息
{
"_index":"文档所在的索引库",
"_type":"文档类型",
"_id":"唯一标识",
"_score":分数,数字类型,表示搜索的相关性,
"_source":{
"属性key":"属性value"
}
}
文档基本语法
索引文档(创建文档)
注意:PUT和POST都可以索引文档,但是POST索引文档可以不指定id自动生成id,而PUT索引文档则必须指定id。
#在my_class索引库下索引(创建)一个新文档,指定文档的id=1。
PUT /my_class/_doc/11
{
"name":"马三娘",
"province":"湖南省",
"city":"长沙市",
"county":"天心区",
"address":"朱雀街永乐城千金一笑楼天字第一号客房",
"sex":1,
"favoriteNovels":["凡人修仙传","天龙八部","将夜"]
}
#在my_class索引库下索引(创建)一个新文档,自动生成id。
POST /my_class/_doc
{
"name":"李燕",
"province":"湖南省",
"city":"长沙市",
"county":"天心区",
"address":"朱雀街永安城红袖楼十三号客房",
"sex":0,
"favoriteNovels":["诛仙","射雕英雄传","将夜"]
}
删除文档
#在my_class索引库下删除id=1的文档。
DELETE /my_class/_doc/1
#在my_class索引库下删除name=李燕的所有文档。
POST /my_class/_delete_by_query
{
"query":{
"match":{
"name":"李燕"
}
}
}
查询文档
#在my_class索引库下查询id=1的文档。
GET /my_class/_doc/1
#在my_class索引库下查询id=1的文档,只返回姓名和性别。
GET /my_class/_doc/1?_source=name,sex
#在my_class索引库下查询id=1的文档,不返回业务数据。
GET /my_class/_doc/1?_source=false
修改文档
#修改my_class索引库下id=1的文档name为王五。备注:如果存在该文档则覆盖所有内容,不存在则创建。
PUT my_class/_doc/1
{
"name":"王五"
}
#修改my_class索引库下id=2的文档name为张翠山。备注:如果存在该文档则只修改name这一个属性,否则提示不存在该文档。
POST /my_class/_update/2
{
"doc": {
"name":"张翠山"
}
}
#并发场景下修改文档。
POST /my_class/_update/1?if_seq_no=113&if_primary_term=1
{
"doc": {
"name":"张翠山",
"movies":["钢铁侠","美国队长"]
}
}