• 常见的数据类型


    核心数据类型

    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)
            }
        }
    }
  • 相关阅读:
    img标签中的alt属性在IE6/7/8中的兼容问题
    fontsize可以解决img标签插入图片之间的缝隙
    BFC
    为什么 input 元素能用 width 属性
    <textarea>使用的时候发现的两个问题的总结
    c语言-概述
    C语言- while 语句
    C语言- for 语句
    C语言- if 语句
    C语言-编译运行程序
  • 原文地址:https://www.cnblogs.com/jwen1994/p/12639244.html
Copyright © 2020-2023  润新知