首页 > 其他 > 详细

常见的数据类型

时间:2020-04-05 22:54:50      阅读:71      评论:0      收藏:0      [点我收藏+]

核心数据类型

1)字符串

  • text:用于全文索引,该类型的字段将通过分词器进行分词
  • keyword:不分词,只能搜索该字段的完整的值

2)数值型:long, integer, short, byte, double, float, half_float, scaled_float

3)布尔:boolean

4)二进制:binary(该类型的字段把值当做经过 base64 编码的字符串,默认不存储,且不可搜索)

5)范围类型

  • 范围类型表示值是一个范围,而不是一个具体的值(integer_range, float_range, long_range, double_range, date_range)
  • 比如 age 的类型是 integer_range,那么值可以是 {"gte" : 20, "lte" : 40};搜索 "term" : {"age": 21} 可以搜索该值

6)日期:date

  • 由于 Json 没有 date 类型,所以 ES 通过识别字符串是否符合 format 定义的格式来判断是否为 date 类型
  • format 默认为:strict_date_optional_time || epoch_millis。例如:"2022-01-01"、"2022/01/01 12:10:30" 这种字符串格式 或者是从开始纪元(1970年1月1日0点) 开始的毫秒数
PUT localhost:9200/nba/_mapping
{
    "properties":{
        "name":{
            "type":"text"
        },
        "team_name":{
            "type":"text"
        },
        "position":{
            "type":"text"
        },
        "play_year":{
            "type":"long"
        },
        "jerse_no":{
            "type":"keyword"
        },
        "title":{
            "type":"text"
        },
        "date":{
            "type":"date"
        }
    }
}


POST localhost:9200/nba/_doc/4
{
    "name":"蔡x坤",
    "team_name":"勇士",
    "position":"得分后卫",
    "play_year":10,
    "jerse_no":"31",
    "title":"打球最帅的明星",
    "date":"2020-01-01"
}

POST localhost:9200/nba/_doc/5
{
    "name":"杨超越",
    "team_name":"猴急",
    "position":"得分后卫",
    "play_year":10,
    "jerse_no":"32",
    "title":"打球最可爱的明星",
    "date":1610350870
}

POST localhost:9200/nba/_doc/6
{
    "name":"吴亦凡",
    "team_name":"湖人",
    "position":"得分后卫",
    "play_year":10,
    "jerse_no":"33",
    "title":"最会说唱的明星",
    "date":1641886870000
}

复杂数据类型

1)数组类型 Array

  • ES中没有专门的数组类型, 直接使用[]定义即可,数组中所有的值必须是同一种数据类型, 不支持混合数据类型的数组:
  • 字符串数组 [ "one", "two" ]
  • 整数数组 [ 1, 2 ]
  • Object对象数组 [ { "name": "Louis", "age": 18 }, { "name": "Daniel", "age": 17 }]
  • 同一个数组只能存同类型的数据,不能混存,比如 [ 10, "some string" ] 是错误的

2)对象类型 Object

对象类型可能有内部对象

POST localhost:9200/nba/_doc/8
{
    "name":"吴亦凡",
    "team_name":"湖人",
    "position":"得分后卫",
    "play_year":10,
    "jerse_no":"33",
    "title":"最会说唱的明星",
    "date":"1641886870",
    "array":[
        "one",
        "two"
    ],
    "address":{
        "region":"China",
        "location":{
            "province":"GuangDong",
            "city":"GuangZhou"
        }
    }
}

索引方式
"address.region": "China",
"address.location.province": "GuangDong",
"address.location.city": "GuangZhou"

POST localhost:9200/nba/_search
{
    "query":{
        "match":{
            "address.region":"china"
        }
    }
}

专用数据类型

IP类型:IP类型的字段用于存储IPv4或IPv6的地址, 本质上是一个长整型字段.

POST localhost:9200/nba/_mapping
{
    "properties":{
        "name":{
            "type":"text"
        },
        "team_name":{
            "type":"text"
        },
        "position":{
            "type":"text"
        },
        "play_year":{
            "type":"long"
        },
        "jerse_no":{
            "type":"keyword"
        },
        "title":{
            "type":"text"
        },
        "date":{
            "type":"date"
        },
        "ip_addr":{
            "type":"ip"
        }
    }
}

PUT localhost:9200/nba/_doc/9
{
    "name":"吴亦凡",
    "team_name":"湖人",
    "position":"得分后卫",
    "play_year":10,
    "jerse_no":"33",
    "title":"最会说唱的明星",
    "ip_addr":"192.168.1.1"
}


POST localhost:9200/nba/_search
{
    "query":{
        "term":{
            "ip_addr":"192.168.0.0/16"   // (192.168.0.0~192.168.255.255)
        }
    }
}

 

常见的数据类型

原文:https://www.cnblogs.com/jwen1994/p/12639244.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!