请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

ElasticSearch 常用字段类型

[复制链接]
查看: 29|回复: 0

2万

主题

2万

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75461
发表于 2020-9-17 04:19 | 显示全部楼层 |阅读模式
ES常用的数据类型可分为3大类


  • 核数据类型
  • 复杂数据类型
  • 专数据类型


核心数据类型

(1)字符串


  • text  于全索引,搜索时会自动使用分词器进分词再匹配
  • keyword  不分词,搜索时需要匹配完整的值


(2)数值型


  • 整型: byte,short,integer,long
  • 浮点型: float, half_float, scaled_float,double


(3)日期类型


  • date
json没有date类型,插入|更新文档|字段时怎么表示date类型?
  1. #mapping,将字段类型设置为date"type" : "date" #插入|更新此字段的值时,有3种表示方式#使用固定格式的字符串"2020-04-18"、"2020/04/18 09:00:00"   #值使用长整型的时间戳,1970-01-01 00:00:00,s1610350870    #值使用长整型的时间戳,ms1641886870000
复制代码


(4)范围型

integer_range, long_range, float_range,double_range,date_range
比如招聘要求年龄在[20, 40]上,mapping:
  1. age_limit :{ "type" : "integer_range"}
复制代码

插入|更新文档|字段时,值写成json对象的形式:
  1. "age_limit" : { "gte" : 20, "lte" : 40}
复制代码
gt是大于,lt是小于,e是equals等于。

按此字段搜索时,值写常量:
  1. "term" : { "age_limit" : 30}
复制代码
age_limit的区间包含了此值的文档都算是匹配。


(5)布尔


  • boolean     #true、false


(6)进制


  • binary   会把值当做经过 base64 编码的字符串,默认不存储,且不可搜索



复杂数据类型

(1)对象


  • object
  1. #定义mapping"user" : {    "type":"object"}#插入|更新字段的值,值写成json对象的形式"user" : {    "name":"chy",    "age":12}#搜索时,字段名使用点号连接"match":{     "user.name":"chy" }
复制代码
一个对象中可以嵌套对象。


(2)数组
  1. #ES没有专门的数组类型,定义mapping,写成元素的类型"arr" : {    "type":"integer"}#插入|更新字段的值。元素可以是各种类型,但元素的类型要相同"arr" : [1,3,4]
复制代码




专用数据类型


  • ip
  1. #定义mapping"ip_address" : {    "type":"ip"}#插入|更新字段的值,值写成字符串形式"ip" : "192.168.1.1"#搜索"match":{     "ip_address":"192.168.1.1" }#ip在192.168.0.0 ~ 192.168.255.255上的文档都匹配"match":{     "ip_address":"192.168.0.0/16" }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表