第⼆章ES数据类型介绍
⼀、⽂档字段介绍
1、核⼼数据类型
#字符串类型:string,字符串类还可被分为text和keyword类型,如果我们让es⾃动映射数据,那么es会把字符串定义为text,并且还加了⼀个keyword类型字段。
text⽂本数据类型,⽤于索引全⽂值的字段。使⽤⽂本数据类型的字段,它们会被分词,在索引之前将字符串转换为单个术语的列表(倒排索引),分词过程允许ES搜索每个全⽂字段中的单个单词。什么情况适合使⽤text,只要不具备唯⼀性的字符串⼀般都可以使⽤text。
keyword关键字数据类型,⽤于索引结构化内容的字段。使⽤keyword类型的字段,其不会被分析,给什么值就原封不动地按照这个值索引,所以关键字字段只能按其确切值进⾏搜索。什么情况下使⽤keyword,具有唯⼀性的字符串,例如:电⼦邮件地址、MAC地址、⾝份证号、状态代码...等等。
# 数字型数据类型:long、integer、short、byte、double、float
# ⽇期类型:date
# 布尔类型:boolean
2、复杂数据类型
# 数组:⽆需专门的数据类型
# 对象数据类型:单独的JSON对象
# 嵌套数据类型:nested,关于JSON对象的数组
3、地理数据类型
# 地理点数据类型
# 地理形状数据类型
4、专门数据类型:
# IPv4数据类型
# 单词计数数据类型token_count
我们结合前⾯的映射来看看:
创建⼀个新的索引:
PUT/open-soft
显式映射:
"properties": {
"corp": {
"type": "text"
},
"lang": {
"type": "text"
},
"name": {
"type": "text"
}
}
}
索引或者说⼊库⼀个⽂档,注意这个⽂档的字段,⽐我们显⽰映射的字段要多个star字段:PUT/open-soft/_doc/1
{
"name": "Apache Hadoop",
"lang": "Java",
"corp": "Apache",
"stars": 200
}
通过GET /open-soft/_mapping,我们可以看到es⾃动帮我们新增了stars这个字段。
修改映射,增加⼀个新的字段:
"properties": {
"year": {
"type": "integer"
}
}
}
5、数组
不需要特殊配置,⼀个字段如果被配置为基本数据类型,就是天⽣⽀持数组类型的。任何字段都可以有0个或多个值,但是在⼀个数组中数据类型必须⼀样。⽐如:
PUT/open-soft/_doc/2
{
"name": [
"Apache Activemq",
"Activemq Artemis"
],
"lang": "Java",
"corp": "Apache",
"stars": [
500,
200
]
}
是没问题的,但是如果:
PUT /open-soft/_doc/3
{
"name": ["Apache Kafka"],
"lang": "Java",
"corp": "Apache",
"stars":[500,"kafka"]
}
则会出错。
6、对象
JSON⽂档是有层次结构的,⼀个⽂档可能包含其他⽂档,如果⼀个⽂档包含其他⽂档,那么该⽂档值是对象类型,其数据类型是对象。当然ElasticSearch中是没有所谓对象类型的,⽐如:
PUT/open-soft/_doc/object
{
"name": [
"Apache ShardingSphere"
],
"lang": "Java",
"corp": "JingDong",
"stars": 400,
"address": {
"city": "BeiJing",
"country": "亦庄"
}
json值的类型有哪些}
查询结构映射:
get /open-soft/_mapping
返回结果:
{
"open-soft" : {
"mappings" : {
"properties" : {
"address" : {
"properties" : {
"city" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256 }
}
},
"country" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256 }
}
}
}
},
"corp" : {
"type" : "text"
},
"lang" : {
"type" : "text"
},
"name" : {
"type" : "text"
},
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论