既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
GET /indexName/_mappings
2) ES数据类型
常见数据类型
- 数字类型
long integer short byte double float half_float scaled_float unsigned_long
- keywords
keyword:适用于索引结构化的字段,只能精确值搜索,可以用于过滤、排序、聚合
constant_keyword:始终包含相同值的关键字字段
wildcard: 可针对类似grep的通配符查询优化日志行等类似的关键字值
3. 时间类型 Dates :包括 date和date_nanos
-
alias 定义别名
-
binary 二进制
-
range 区间类型 integer_range、float_range、long_range、double_range、date_range
-
text 类型
设置text类型以后,字段内容会被分析,在生成倒排索引(默认)以前,字符串会被分析器分成一个一个词项,text类型的字段不用于排序,很少用于聚合
对象关系类型
-
object : 用于单个JSON对象
-
nested: 用于JSON对象数组
-
flattened: 允许将整个JSON对象索引为单个字段
结构化类型
- geo-point:纬度/经度积分
2. geo-shape:用于多边形等复杂形状
-
point:笛卡尔坐标点
-
shape:笛卡尔任意几何图形
特殊类型(常用)
1. IP地址:ip 用于IPv4和IPv6地址
- completion 提供自动完成建议
数组 array
在Elasticsearch中,数组不需要专用的字段数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的数据类型
3)映射类型
动态 自动映射
PUT /product_mapping/_doc/1
{
“name”: “手机”,
“desc”: “插入数据 直接自动映射”,
“count”: 100,
“price”: 1999.9,
“date”: “2022-12-7”,
“isdel”: true,
“tags”: [
“xiaoqiao”,
“fashion”
]
}
静态 手动映射
案例
PUT /product
{
“mappings”: {
“properties”: {
“date”: {
“type”: “text”
},
“desc”: {
“type”: “text”,
“analyzer”: “english”
},
“name”: {
“type”: “text”,
“index”: “false”
},
“price”: {
“type”: “long”
},
“tags”: {
“type”: “text”,
“index”: “true”
},
“parts”: {
“type”: “object”
},
“partlist”: {
“type”: “nested”
}
}
}
}
常用映射参数
-
index: 是否对当前字段创建倒排索引,默认为true,若为false,该字段不会通过索引被搜索到,但是仍会在source元数据中展示
-
analyzer:指定分析器(character filter、tokenizer、Token filters)
-
doc_values:为了提升排序和聚合效率,默认true,如果确定不需要对字段进行排序或聚合,也不需要通过脚本访问字段值,则可以禁用doc值以节省磁盘空间(不支持text和annotated_text)
-
eager_global_ordinals:用于聚合的字段上,优化聚合性能
-
enable:是否创建倒排索引,可以对字段操作,也可以对索引操作
PUT my_index
{
“mappings”:
{
“enabled”: false
}
}
6. fielddata:查询时内存数据结构,在首次用当前字段聚合、排序或者在脚本中使用时,需要字段为fielddata数据结构,并且创建倒排索引保存到堆中
#每个tag产品的数量 “size”:0, 不显示原始结果
GET /product/_search
{
“aggs”: {
“tag_agg_group”: {
“terms”: {
“field”: “tags”
}
}
},
“size”:0
}
#将文本field的fielddata属性设置为true
PUT /product/_mapping
{
“properties”: {
“tags”: {
“type”: “text”,
“fielddata”: true
}
}
}
7. fields:给field创建多字段,用于不同目的(全文检索或者聚合分析排序)
# 给product创建一个keyword
PUT fields_test
{
“mappings”: {
“properties”: {
“product”: {
“type”: “text”,
“fields”: {
“raw”: {
“type”: “keyword”
}
}
}
}
}
}插入数据
PUT fields_test/_doc/1
{
“product”: “New York”
}查询数据
GET fields_test/_search
{
“query”: {
“match”: {
“product”: “york”
}
},
“sort”: {
“product.raw”: “asc”
},
“aggs”: {
“product”: {
“terms”: {
“field”: “product.raw”
}
}
}
}
8. norms:是否禁用评分(在filter和聚合字段上应该禁用)
9. null_value:为null值设置默认值
10. search_analyzer:设置单独的查询时分析器
11. store:设置字段是否仅查询
12. format:格式化
“date”: {
“type”: “date”,
“format”: “yyyy-MM-dd”
}
13. copy_to 将多个字段的值复制到组字段中,然后可以将其作为单个字段进行查询
# mapping映射
PUT copy_to_test
{
“mappings”: {
“properties”: {
“field1”: {
“type”: “text”,
“copy_to”: “field_all”
},
“field2”: {
“type”: “text”,
“copy_to”: “field_all”
},
“field_all”: {
“type”: “text”
}
}
}
}数据插入
PUT copy_to/_doc/1
{
“field1”: “field1”,
“field2”: “field2”
}查询 可匹配到数据
GET copy_to/_search
{
“query”: {
“match”: {
“field_all”: {
“query”: “field1 field2”
}
}
}
}
14. coerce:是否允许强制类型转换
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
14. coerce:是否允许强制类型转换
[外链图片转存中…(img-q1u8A7tW-1715591640384)]
[外链图片转存中…(img-5Yqg1ViR-1715591640384)]
[外链图片转存中…(img-IzSqKcZ7-1715591640385)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新