Elasticsearch Mapping 详解

1 概念

ES 中的 Mapping 相当于传统数据库中的表定义,它有以下作用:

1 定义索引中的字段的名字。
2 定义索引中的字段的类型,比如字符串,数字等。
3 定义索引中的字段是否建立倒排索引。

2 ES 字段常见数据类型

1 数字类型:long、integer、short、byte、double、float、half_float、scaled_float、unsigned_long
在这里插入图片描述
2 keyword:适用于索引结构化的字段,可以用于过滤、排序、聚合、keyword类型的字段只能通过精确值(exact value)搜索到,id应该用keyword.

3 date:时间类型

4 text:当一个字段是要被全文搜索的,比如Email内容、产品描述、这些字段应该使用text类型,设置text类型以后,字段内容会被分析,被分词器分成一个一个词项,用于生成倒排索引。text字段不用于排序,很少用于聚合。

3 两种映射类型

3.1 Dynamic field mapping(自动映射)

  • 整数 ⇒ long
  • 浮点数 ⇒ float
  • true || false ⇒ boolean
  • 日期 ⇒ date
  • 数组 ⇒ 数组中第一个
  • 对象 ⇒ object
  • 字符串 ⇒ keyword 或 text

demo:

1 创建

POST /test_index/_doc
 {
   "name":"张三",
   "age":19,
    "tags":["学霸","帅哥"],
    "testField":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 }

2 查看索引

GET test_index/_mapping

在这里插入图片描述

3 keyword

text类型下有子属性为keyword,用于精准查找。

GET /test_index/_search
{
  "query": {
     "term": {
       "name": {
         "value": "张三"
       }
     }
  }
}

在这里插入图片描述

GET /test_index/_search
{
  "query": {
     "term": {
       "name.keyword": {
         "value": "张三"
       }
     }
  }
}

在这里插入图片描述
4 ignore_above
ignore_above 表示大于当当前设置的值的数据不会被查找,但是会被存储。

GET /test_index/_search
{
  "query": {
     "wildcard": {
       "testField.keyword": {
         "value": "a*"
       }
     }
  }
}

在这里插入图片描述
在这里插入图片描述

3.2 手动映射

PUT student_index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "create_date": {
        "type": "date"
      },
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      }
    }
  }
}


#添加数据
POST /student_index/_doc
{
  "age":18,
  "name":"kobe brant",
  "create_date":"2022-10-20"
}

#查询数据
GET /student_index/_search
{
  
  "query": {
    "match": {
      "name": "kobe"
    }
  }
}

在这里插入图片描述

4 模板的使用

4.1 创建模板

PUT /_template/operate_log_template
{
  "index_patterns": [
    "operate_log_*"
  ],
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "userId": {
        "type": "long"
      },
      "operateName": {
        "type": "keyword"
      },
      "reportTime": {
        "type": "date",
		"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
      }
    }
  }
}

4.2 添加数据

#8月数据
POST /operate_log_2022.08/_doc
{
  "userId" : 6,
   "operateName":"创建学生",
  "reportTime" : "2022-08-28 03:42:10"
}

#9月数据
POST /operate_log_2022.09/_doc
{
  "userId" : 6,
   "operateName":"删除学生",
  "reportTime" : "2022-09-25 03:42:10"
}

4.3 查看数据、查看索引

GET operate_log_*/_search
{
  "query": {
    "match_all": {}
  }
}

GET operate_log_2022.08
GET operate_log_2022.09

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

响彻天堂丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值