Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计

来自AI助手的总结
文章讲解了Elasticsearch文档增删改查、批量操作及mapping自定义类型的使用。
Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计

一、管理文档的API

1.1 文档的创建

1.1 创建文档时不指定文档ID

1、填写POST请求http://192.168.1.121:9200/es1-num/_doc,创建文档es1-num(不指定ID)

{
    "name": "李文轩",
    "hobby": ["吃鸡","丝袜","rap"]
}

图片[2]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[3]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.1 创建文档时指定文档ID

1、填写POST请求http://192.168.1.121:9200/es1-num/_doc/1001,创建文档es1-num(指定ID)

{
    "name": "彭斌北京分斌",
    "hobby": [
        "浏览网站",
        "小电影",
        "熬夜"
    ]
}

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

图片[4]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.2 文档的修改

1.2 全量更新

1、填写POST请求http://192.168.1.121:9200/es1-num/_doc/PxHp8YwBHiJ8xufDjuVI,全量更新(所见即所得)

{
    "name": "李文轩2023"
}

图片[5]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[6]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.2 局部更新

1、填写POST请求http://192.168.1.121:9200/es1-num/_doc/1001/_update,局部更新文档

{
    "doc": {
        "age": 20,
        "hobby": [
            "抽烟",
            "喝酒",
            "烫头"
        ]
    }
}

图片[7]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[8]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.3 文档的查看

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

图片[9]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[10]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.4 文档的删除

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

图片[11]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[12]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.5 文档的批量操作

1.5 批量创建

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":["骑车","拍小电影"] }

图片[13]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[14]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.5 批量修改

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"} }

图片[15]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[16]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.5 查询文档

1、填写POST请求http://192.168.1.121:9200/_mget,批量查看id分别为1001和1002的文档

{
  "docs": [
    {
      "_index": "elk1",
      "_id": "1001"
    },
    {
      "_index": "elk1",
      "_id": "1002"
    }
  ]
} 

图片[17]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[18]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

1.5 批量删除

1、填写POST请求http://192.168.1.121:9200/_bulk,删除id分别为1001和1002的文档

{ "delete" : { "_index" : "elk1", "_id" : "1001" } }
{ "delete" : { "_index" : "elk1", "_id" : "1002" } }

图片[19]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[20]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

二、使用映射(mapping)自定义数据类型

2.1 映射的数据类型

当写入文档时,字段的数据类型会被ES动态自动创建,但有的时候动态创建的类型并符合我们的需求。这个时侯就可以使用映射解决。

使用映射技术,可以对ES文档的字段类型提前定义我们期望的数据类型,便于后期的处理和搜索。

常用的三种数据类型:

  • text:全文检索,可以被全文匹配,即该字段是可以被拆分的。

  • keyword:精确匹配,必须和内容完全匹配,才能被查询出来。

  • ip:支持Ipv4和Ipv6,将来可以对该字段类型进行IP地址范围找索。

参考链接:

2.2 IP案例

2.2 创建索引时指定映射关系

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
    }
}

图片[21]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[22]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.2 查看索引的映射关系

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

图片[23]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[24]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.2 创建测试数据

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" }

图片[25]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[26]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.2 查看指定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"
        }
    }
}

图片[27]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.2 删除索引

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

图片[28]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[29]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.3 date案例

2.3 创建索引时指定映射关系

1、填写PUT请求http://192.168.1.121:9200/elk-date, 创建索引时指定映射关系

{
    "mappings": {
        "properties": {
            "birthday": {
                "type": "date",
                "format": "yyyy-MM-dd"
            }
        }
    }
}

图片[30]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[31]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.3 查看索引的映射关系

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

图片[32]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[33]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.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" }

图片[34]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[35]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.3 查看测试数据

1、填写GET请求http://192.168.1.121:9200/elk-date/_search, 查看年龄,从大到小(注意,比较的是数字,数字大的在下面)

{
  "sort": { "birthday": "asc"} 
}

图片[36]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.3 删除索引

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

图片[37]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[38]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.4 综合案例

2.4 创建索引

1、填写PUT请求http://192.168.1.121:9200/elk-2023, 创建索引时指定映射关系

图片[39]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[40]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.4 查看索引

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

图片[41]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[42]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.4 为已创建的索引修改数据类型

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"
        }
    }
}

图片[43]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[44]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.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":["抽烟","喝酒","烫头","足疗"]}

图片[45]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[46]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.4 查看数据-基于gender-匹配keyword类型

1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配gender的值为女,查看到匹配结果为空

{
    "query":{
        "match":{
            "gender": "女"
        }
    }
}

图片[47]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

说明:因为gender的类型为keyword,必须精确匹配才能匹配完成

2、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配gender的值为女性的,查看到成功匹配

{
    "query":{
        "match":{
            "gender": "女性的"
        }
    }
}

图片[48]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.4 查看数据-基于name字段搜索-匹配text类型

1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配name的值为吴,查看到成功匹配

{
    "query":{
        "match":{
            "name": "吴"
        }
    }
}

图片[49]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

说明:因为name的类型为test,模糊匹配就能匹配完成

2.4 查看数据-基于email字段搜索-匹配keyword类型

1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 精准匹配email的值为jiangxiangyu@oldboyedu.com,查看到成功匹配

{
    "query":{
        "match":{
            "email": "jiangxiangyu@oldboyedu.com"
        }
    }
}

图片[50]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.4 查看数据-基于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"
        }
    }
}

图片[51]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

2.4 查看数据-基于city字段搜索,无法完成,该字段无法被检索

1、填写GET请求http://192.168.1.121:9200/elk-2023/_search, 匹配city的值为濮阳市,查看到不能成功匹配

{
    "query":{
        "match":{
            "city": "濮阳市"
        }
    }
}

图片[52]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

说明:因为city的index设置为false(默认为true),所以导致无法查询

2.4 删除索引

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

图片[53]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

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

图片[54]-Elasticsearch文档与Mapping实战:CRUD、自定义类型与字段设计-AI运维探索者

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容