ElasticSearch中常用的数据类型

发布于:2025-04-16 ⋅ 阅读:(33) ⋅ 点赞:(0)

一、映射

Elasticsearch中通过映射来指定字段的数据类型,映射方式有2种,静态映射和动态映射。

1.动态映射

使用动态映射时,无须指定字段的数据类型,Elasticshearch会自动根据字段内容来判断映射到哪个数据类型。
比如,插入’2024/4/14 12:12:12’格式的字符串,会将其动态映射到Date类型。
true和false会动态映射到boolean类型

2.静态映射

使用静态映射时,需要在创建索引时,指定字段名称和映射的数据类型。后续创建文档时就根据设定好的映射来存储数据。

二、常用字段类型

1.Alias别名

使用别名可以索引中的字段定义一个替代名称,搜索替代名称时,相当于搜索其原字段内容

PUT userinfo
{
    "mappings": {
        "properties": {
            "age":{
                "type": "long"
            },
            "aliasage":{
            	#指定类型为别名
                "type": "alias",
                #指向age字段
                "path":"age"
            }
        }
    }
}
2.Binary二进制值

用来存储Base64的字符串或二进制值

PUT myindex-2_02
{
    "mappings": {
        "properties": {
            "name":{
                "type": "text"
            },
            "blob":{
            	#指定类型为二进制
                "type": "binary",
            }
        }
    }
}
3.Boolean布尔类型

用来存储true和false的布尔值

PUT myindex-2_03
{
    "mappings": {
        "properties": {
            "is_published":{
                "type": "booolean"
            }
        }
    }
}
4.Date日期

用来存储包含日期格式的字符串

PUT myindex-2_04
{
    "mappings": {
        "properties": {
            "date":{
                "type": "date"
            }
        }
    }
}
5.数字类型
数字类型 说明
long 表示有符号的64位整数
integer 表示有符号的32位整数
short 表示有符号的16位整数
byte 表示有符号的8位整数
double 表示双精度浮点数
float 表示单精度浮点数
half_float 存储最小值2^-24,最大值65504的整数
unsigned_long 存储最小值为0,最大值2^64-1的数值
PUT myindex-2_05
{
    "mappings": {
        "properties": {
            "number":{
                "type": "integer"
            }
        }
    }
}
6.object(json数据格式)

object类型其实就是json数据格式

PUT myindex-object
{
  "mappings": {
    "properties": {
      "manager":{
        "properties": {
          "age":{"type":"integer"},
          "name":{
            "properties":{
              "first":{"type":"text"},
              "last":{"type":"text"}
            }
          }
        }
      }
    }
  }
}
7.Geopoint地理位置

用来存储经纬度,使内容支持经纬度查询

PUT myindex_hotels
{
  "mappings": {
    "properties": {
      "hotels":{
        "properties": {
          "bin":{
            "properties":{
              "loaction": {
                "type":"geo_point"
              }
            }
          }
        }
      }
    }
  }
}
8.Keyword关键字

用于存储结构化内容,该类型字段通常用于排序,聚合查询等。该类型内容存储时不会进行分词

PUT myindex-2_11
{
    "mappings": {
        "properties": {
            "tag":{
                "type": "keyword"
            }
        }
    }
}
9.Text文本

用于存储文本,内容会被分词器分词,可以用于全文检索

PUT myindex-2_12
{
    "mappings": {
        "properties": {
            "tagname":{
                "type": "text"
            }
        }
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到