ElasticSearch 常用字段类型
ES常用的数据类型可分为3大类
- 核⼼数据类型
- 复杂数据类型
- 专⽤数据类型
核心数据类型
(1)字符串
- text ⽤于全⽂索引,搜索时会自动使用分词器进⾏分词再匹配
- keyword 不分词,搜索时需要匹配完整的值
(2)数值型
- 整型: byte,short,integer,long
- 浮点型: float, half_float, scaled_float,double
(3)日期类型
- date
json没有date类型,插入|更新文档|字段时怎么表示date类型?
#mapping,将字段类型设置为date "type" : "date" #插入|更新此字段的值时,有3种表示方式 #使用固定格式的字符串 "2020-04-18"、"2020/04/18 09:00:00" #值使用长整型的时间戳,1970-01-01 00:00:00,s 1610350870 #值使用长整型的时间戳,ms 1641886870000
(4)范围型
integer_range, long_range, float_range,double_range,date_range
比如招聘要求年龄在[20, 40]上,mapping:
age_limit :{ "type" : "integer_range" }
插入|更新文档|字段时,值写成json对象的形式:
"age_limit" : { "gte" : 20, "lte" : 40 }
gt是大于,lt是小于,e是equals等于。
按此字段搜索时,值写常量:
"term" : { "age_limit" : 30 }
age_limit的区间包含了此值的文档都算是匹配。
(5)布尔
- boolean #true、false
(6)⼆进制
- binary 会把值当做经过 base64 编码的字符串,默认不存储,且不可搜索
复杂数据类型
(1)对象
- object
#定义mapping "user" : { "type":"object" } #插入|更新字段的值,值写成json对象的形式 "user" : { "name":"chy", "age":12 } #搜索时,字段名使用点号连接 "match":{ "user.name":"chy" }
一个对象中可以嵌套对象。
(2)数组
#ES没有专门的数组类型,定义mapping,写成元素的类型 "arr" : { "type":"integer" } #插入|更新字段的值。元素可以是各种类型,但元素的类型要相同 "arr" : [1,3,4]
专用数据类型
- ip
#定义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" }
分类:
ElasticSearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决