参考官方英文文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
Mapping是定义文档及其包含的字段如何存储和编制索引的过程,每个索引都有一个映射类型,用于确定文档将如何编制索引。
Meta-fields
包括文档的_index,_type,_id和_source字段
es字段数据类型:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
1.字符串类型
text、keyword
2.数值类型
long、integer、short、byte、double、float、half_float、scaled_float
3.日期类型
date
4.布尔值类型
boolean
5.二进制类型
binary(接受二进制值作为Base64编码字符串。 该字段默认情况下不存储,不可搜索)
6.范围类型
integer_range、float_range、long_range、double_range、date_range
7.Array数据类型(Array不需要定义特殊类型)
在 Elasticsearch 中,没有特定的 array 类型。默认情况下,任何字段都可以包含0个或者更多值,但是,所有 array 中的值必须具有相同的数据类型,例如:
字符串数组:[“one”, “two”]
整数数组:[1,2]
数组的数组:[1, [2, 3]],等价于[1,2,3]
对象数组:[ { “name”: “Mary”, “age”: 12 }, { “name”: “John”, “age”: 10 }]
当自动添加一个字段,array 的第一个值决定了字段的类型。所有接下来的值必须使用相同的数据类型或者必须至少能将他们转换为与它相同的类型
数组不支持混合的数据类型:[10, “some string”]
数组可以包含null值,这些值可以由配置的null_value替换或完全跳过。一个空的array[]被视为不存在的字段-无值的字段。
文档中使用 array 类型不需要提前做任何配置,天生就支持。
PUT my_index/my_type/1
{
"message": "some arrays in this document...",
"tags": [ "elasticsearch", "wow" ],
"lists": [
{
"name": "prog_list",
"description": "programming list"
},
{
"name": "cool_list",
"description": "cool stuff list"
}
]
}
8.Object数据类型 (json嵌套)
object for single JSON objects
{
"region": "US",
"manager": {
"age": 30,
"name": {
"first": "John",
"last": "Smith"
}
}
}
9.地理数据类型
Geo-point、Geo-Shape(比较复杂,参考官网文档,一般用Geo-point就可以了)
10.特殊数据类型
ip(IPv4 and IPv6 addresses)
completion(自动完成/搜索)
token_count(数值类型,分析字符串,索引的数量)
murmur3(索引时计算字段值的散列并将它们存储在索引中的功能。在高基数和大字符串字段上运行基数聚合时有很大帮助)
join(同一索引的文档中创建父/子关系)
以下是常用的参数类型定义&赋值demo
类型 | 参数定义 | 赋值 |
---|---|---|
text | “name”:{“type”:“text”} | “name”: “zhangsan” |
keyword | “tags”:{“type”:“keyword”} | “tags”: “abc” |
date | “date”:{“type”: “date”} | “date”:“2015-01-01T12:10:30Z” |
long | “age”:{“type”:“long”} | “age” :28 |
double | “score”:{“type”:“double”} | “score”:98.8 |
boolean | “isgirl”: { “type”: “boolean” } | “isgirl” :true |
ip | “ip_addr”:{“type”:“ip”} | “ip_addr”: “192.168.1.1” |
geo_point | “location”: {“type”:“geo_point”} | “location”:{“lat”:40.12,“lon”:-71.34} |
Mapping parameters
https://www.elastic.co/guide/en/elasticsearch/reference/6.6/mapping-params.html
analyzer
normalizer
boost
coerce
copy_to
doc_values
dynamic
enabled
fielddata
eager_global_ordinals
format
ignore_above
ignore_malformed
index_options
index_phrases
index_prefixes
index
fields
norms
null_value
position_increment_gap
properties
search_analyzer
similarity
store
term_vector