一、管理文档的API¶
1.1 文档的创建¶
1.1.1 创建文档时不指定文档ID¶
1、填写POST请求http://192.168.1.121:9200/es1-num/_doc,创建文档es1-num(不指定ID)
{
"name": "李文轩",
"hobby": ["吃鸡","丝袜","rap"]
}

2、打开ES Head扩展程序查看文档具体信息

1.1.2 创建文档时指定文档ID¶
1、填写POST请求http://192.168.1.121:9200/es1-num/_doc/1001,创建文档es1-num(指定ID)
{
"name": "彭斌北京分斌",
"hobby": [
"浏览网站",
"小电影",
"熬夜"
]
}
2、打开ES Head扩展程序查看文档具体信息

1.2 文档的修改¶
1.2.1 全量更新¶
1、填写POST请求http://192.168.1.121:9200/es1-num/_doc/PxHp8YwBHiJ8xufDjuVI,全量更新(所见即所得)
{
"name": "李文轩2023"
}

2、打开ES Head扩展程序查看文档具体信息,观察到只剩name字段

1.2.2 局部更新¶
1、填写POST请求http://192.168.1.121:9200/es1-num/_doc/1001/_update,局部更新文档
{
"doc": {
"age": 20,
"hobby": [
"抽烟",
"喝酒",
"烫头"
]
}
}

2、打开ES Head扩展程序查看文档具体信息

1.3 文档的查看¶
1、填写GET请求http://192.168.1.121:9200/es1-num/_search,查看文档

2、打开ES Head扩展程序查看文档

1.4 文档的删除¶
1、填写DELETE请求http://192.168.1.121:9200/es1-num/_doc/1001,删除文档

2、打开ES Head扩展程序查看文档,ID为1001的文档已被删除

1.5 文档的批量操作¶
1.5.1 批量创建¶
1、填写POST请求http://192.168.1.121:9200/_bulk,批量创建文档
{ "create": { "_index": "elk1"} }
{ "name": "oldboy","hobby":["Linux","思想课"] }
{ "create": { "_index": "elk1","_id": 1002} }
{ "name": "振亚老师","hobby":["妹子","吃面"] }
{ "create": { "_index": "elk1","_id": 1001} }
{ "name": "苍老师","hobby":["家庭主妇"] }
{ "create": { "_index": "elk1"} }
{ "name": "李导","hobby":["骑车","拍小电影"] }

2、打开ES Head扩展程序查看文档具体信息

1.5.2 批量修改¶
1、填写POST请求http://192.168.1.121:9200/_bulk,批量修改文档
{ "update" : {"_id" : "1001", "_index" : "elk1"} }
{ "doc" : {"name" : "CangLaoShi"} }
{ "update" : {"_id" : "1002", "_index" : "elk1"} }
{ "doc" : {"name" : "ZhenYaTeacher"} }

2、打开ES Head扩展程序查看文档具体信息,已经被修改成英文

1.5.3 查询文档¶
1、填写POST请求http://192.168.1.121:9200/_mget,批量查看id分别为1001和1002的文档
{
"docs": [
{
"_index": "elk1",
"_id": "1001"
},
{
"_index": "elk1",
"_id": "1002"
}
]
}

2、也可以打开ES Head扩展程序查看文档具体信息

1.5.4 批量删除¶
1、填写POST请求http://192.168.1.121:9200/_bulk,删除id分别为1001和1002的文档
{ "delete" : { "_index" : "elk1", "_id" : "1001" } }
{ "delete" : { "_index" : "elk1", "_id" : "1002" } }

2、打开ES Head扩展程序查看文档具体信息

二、使用映射(mapping)自定义数据类型¶
2.1 映射的数据类型¶
当写入文档时,字段的数据类型会被ES动态自动创建,但有的时候动态创建的类型并符合我们的需求。这个时侯就可以使用映射解决。
使用映射技术,可以对ES文档的字段类型提前定义我们期望的数据类型,便于后期的处理和搜索。
常用的三种数据类型:
-
text:全文检索,可以被全文匹配,即该字段是可以被拆分的。
-
keyword:精确匹配,必须和内容完全匹配,才能被查询出来。
-
ip:支持Ipv4和Ipv6,将来可以对该字段类型进行IP地址范围找索。
参考链接:
-
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping-types.html
-
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping.html
2.2 IP案例¶
2.2.1 创建索引时指定映射关系¶
1、填写PUT请求http://192.168.1.121:9200/elk-ip, 创建索引时指定映射关系
{
"mappings": {
"properties": {
"ip_addr": {
"type": "ip"
}
}
},
"settings": {
"number_of_shards": 3,
"number_of_replicas": 0
}
}

2、打开ES Head扩展程序查看索引

2.2.2 查看索引的映射关系¶
1、填写GET请求http://192.168.1.121:9200/elk-ip, 查看索引的映射关系

2、打开ES Head扩展程序查看索引映射关系

2.2.3 创建测试数据¶
1、填写POST请求http://192.168.1.121:9200/_bulk, 创建索引时指定映射关系
{ "create": { "_index": "elk-ip"} }
{ "ip_addr": "192.168.10.101" }
{ "create": { "_index": "elk-ip"} }
{ "ip_addr": "192.168.10.201" }
{ "create": { "_index": "elk-ip"} }
{ "ip_addr": "172.31.10.100" }
{ "create": { "_index": "elk-ip"} }
{ "ip_addr": "10.0.0.222" }

2、打开ES Head扩展程序查看索引

2.2.4 查看指定IP网段¶
1、填写GET请求http://192.168.1.121:9200/elk-ip/_search, 查看192.168.0.0/16的网段
{
"query":{
"match":{
"ip_addr": "192.168.0.0/16"
}
}
}

2.2.5 删除索引¶
1、填写DELETE请求http://192.168.1.121:9200/elk-ip, 删除索引elk-ip

2、打开ES Head扩展程序查看索引elk-ip已经被删除

2.3 date案例¶
2.3.1 创建索引时指定映射关系¶
1、填写PUT请求http://192.168.1.121:9200/elk-date, 创建索引时指定映射关系
{
"mappings": {
"properties": {
"birthday": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
}

2、打开ES Head扩展程序查看索引

2.3.2 查看索引的映射关系¶
1、填写GET请求http://192.168.1.121:9200/elk-date, 查看索引的映射关系

2、打开ES Head扩展程序查看索引映射关系

2.3.3 创建测试数据¶
1、填写POST请求http://192.168.1.121:9200/_bulk, 创建索引时指定映射关系
{ "create": { "_index": "elk-date"} }
{ "name": "oldboy","birthday": "1991-10-01" }
{ "create": { "_index": "elk-date"} }
{ "name": "李导","birthday": "2003-05-01" }
{ "create": { "_index": "elk-date"} }
{ "name": "振亚","birthday": "1996-05-01" }

2、打开ES Head扩展程序查看索引

2.3.4 查看测试数据¶
1、填写GET请求http://192.168.1.121:9200/elk-date/_search, 查看年龄,从大到小(注意,比较的是数字,数字大的在下面)
{
"sort": { "birthday": "asc"}
}

2.3.5 删除索引¶
1、填写DELETE请求http://192.168.1.121:9200/elk-date, 删除索引elk-date

2、打开ES Head扩展程序查看索引elk-date已经被删除

2.4 综合案例¶
2.4.1 创建索引¶
1、填写PUT请求http://192.168.1.121:9200/elk-2023, 创建索引时指定映射关系

2、打开ES Head扩展程序查看索引

2.4.2 查看索引¶
1、填写GET请求http://192.168.1.121:9200/elk-2023, 查看索引的映射关系

2、打开ES Head扩展程序查看索引

2.4.3 为已创建的索引修改数据类型¶
1、填写PUT请求http://192.168.1.121:9200/elk-2023/_mapping, 为已创建的索引修改数据类型
{
"properties": {
"name": {
"type": "text",
"index": true
},
"gender": {
"type": "keyword",
"index": true
},
"province": {
"type": "keyword",
"index": true
},
"city": {
"type": "keyword",
"index": false
},
"email": {
"type": "keyword"
},
"ip_addr": {
"type": "ip"
},
"birthday": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}

2、打开ES Head扩展程序查看索引数据类型

2.4.4 添加测试数据¶
1、填写POST请求http://192.168.1.121:9200/_bulk, 创建索引时指定映射关系
{ "create": { "_index": "elk-2023"}}
{ "name": "吴明昆","gender":"男性的","telephone":"1111111111","province":"广西","city":"北海市","email":"wumingkun@oldboyedu.com","ip_addr":"192.168.25.201","birthday":"1999-04-05"}
{ "create": { "_index": "elk-2023"}}
{ "name": "蒋相宇","gender":"女性的","telephone":"2222222222","province":"河南","city":"濮阳市","email":"jiangxiangyu@oldboyedu.com","ip_addr":"192.168.15.31","birthday":"2003-09-05","hobby":["抽烟","喝酒","烫头","足疗"]}

2、打开ES Head扩展程序查看索引

2.4.5 查看数据-基于gender-匹配keyword类型¶
1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配gender的值为女,查看到匹配结果为空
{
"query":{
"match":{
"gender": "女"
}
}
}

说明:因为gender的类型为keyword,必须精确匹配才能匹配完成
2、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配gender的值为女性的,查看到成功匹配
{
"query":{
"match":{
"gender": "女性的"
}
}
}

2.4.6 查看数据-基于name字段搜索-匹配text类型¶
1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配name的值为吴,查看到成功匹配
{
"query":{
"match":{
"name": "吴"
}
}
}

说明:因为name的类型为test,模糊匹配就能匹配完成
2.4.7 查看数据-基于email字段搜索-匹配keyword类型¶
1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 精准匹配email的值为jiangxiangyu@oldboyedu.com,查看到成功匹配
{
"query":{
"match":{
"email": "jiangxiangyu@oldboyedu.com"
}
}
}

2.4.8 查看数据-基于ip_addr字段搜索-匹配ip类型¶
1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配ip_addr的值为192.168.15.0/24,查看到成功匹配
{
"query": {
"match" : {
"ip_addr": "192.168.15.0/24"
}
}
}

2.4.9 查看数据-基于city字段搜索,无法完成,该字段无法被检索¶
1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配city的值为濮阳市,查看到不能成功匹配
{
"query":{
"match":{
"city": "濮阳市"
}
}
}

说明:因为city的index设置为false(默认为true),所以导致无法查询
2.4.10 删除索引¶
1、填写DELETE请求http://192.168.1.121:9200/elk-2023, 删除索引elk-2023

2、打开ES Head扩展程序查看索引elk-2023已经被删除
