【elasticsearch】elasticsearch映射

elasticsearch映射


概念:

自动或者手动为index中的_doc建立的一种数据结构和相关配置,简称为mapping映射。mapping决定了index中field的特征。

索引-index相当于mysql中的数据库,而映射-mapping类似于mysql中的表结构,记录了各种字段的类型

创建映射

需要先创建索引:http://localhost:9200/user

在apipost中,向ES服务器发PUT请求:http://localhost:9200/user/_mapping

{
    "properties": {
        "nickname": {		//字段名,任意填写,类似于mysql表的字段
            "type": "text", //数据类型
            "index": true   //是否被索引,即该字段是否可以被用来搜索
        },
        "realname": {
            "type": "keyword",
            "index": true
        },
        "phone": {
            "type": "keyword",
            "index": false
        }
    }
}

映射数据说明:

  • 字段名:任意填写,根据业务设计属性,例如:username、sex、age等

  • type:数据类型

    • String:字符串类型
      • text:可分词
      • keyword:不可分词,数据会作为完整的字段进行匹配
    • Numerical:数值类型
      • 基本数据类型:long、integer、short、byte、double、float、half_float
      • 浮点数高精度类型:scaled_float
    • Date:日期类型
    • Array:数组类型
    • Object:对象
  • index:是否索引,默认为true所有字段都可以被索引

    • true:字段会被索引,可以用来进行搜索
    • false:字段不会被索引,不可以用来搜索
  • store:是否将数据进行独立存储,默认为false

    原始的数据文本会存储在_source里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source里面提取的。设置"store:true"即可独立存储某个字段,同时获取独立存储的字段比_source解析要快的多,但也会占用更多的空间,需要根据实际业务来设置。

  • analyzer:分词器

image-20220517221029493

请求后,ES服务器响应:

在这里插入图片描述

查询映射

在apipost中,向ES服务器发GET请求:http://localhost:9200/user/_mapping

image-20220517221316431

映射属性测试

添加文档数据

在apipost中,向ES服务器发POST请求:http://localhost:9200/user/_doc/1

请求体:属性为创建映射设置的

{
    "nickname": "小三",
    "realname": "张三",
    "phone": "10086"
}

添加完成后,

测试1:

在apipost中,向ES服务器发GET请求:http://localhost:9200/user/_search

请求体:

{
    "query": {
        "match": {
            //nickname为小、三、小三都是可以查询到数据的,因为映射的时候配置的type是text且index是true,是可以进行分词查询
            "nickname": "小"
        }
    }
}

在这里插入图片描述

请求后,ES服务器响应:

在这里插入图片描述

测试2:

在apipost中,向ES服务器发GET请求:http://localhost:9200/user/_search

请求体:

{
    "query": {
        "match": {
            //只有张三才可以查询数据,因为映射配置的type是keyword,无法分词查询
            "realname": "张三"
        }
    }
}

image-20220517222605980

请求后,ES服务器响应:

image-20220517222540296

测试3:

在apipost中,向ES服务器发GET请求:http://localhost:9200/user/_search

请求体:

{
    "query": {
        "match": {
            //查询报错,因为phone字段映射配置的index为false,不允许进行搜索
            "phone": "10086"
        }
    }
}

image-20220517222720499

索引映射关联

在apipost中,向ES服务器发PUT请求:http://localhost:9200/shopping

{
    "settings": {},
    "mappings": {
        "properties": {
            "title": {
                "type": "keyword",
                "index": true
            }
        }
    }
}

image-20220517231713005

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值