一、管理文档的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地址范围找索。

参考链接:

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已经被删除