Mapping2.0

一、概念

ES中的mapping类似关系型数据库中的表结构。

mapping中包含一些属性,如字段名称、类型、字段使用的分词器、是否评分、是否创建索引等属性

二、查看mapping

GET /product/_mapping

三、ES数据类型

常见类型

1、数字类型:long、integer、short、byte、double、float等

2、Keywords:该类型只能通过精确值搜索,不能被分词。Id应该用keyword

3、Dates(时间类型):包括date和date nanos

4、alias:为现有字段定义别名

5、text:文本类型。默认会创建倒排索引,做文本检索。

对象关系类型

1、object:用于单个JSON对象

2、nested:用于JSON对象数组

结构化类型

1、geo-point:纬度/经度积分

2、geo-shape:用于多边形等复杂形状

3、point:笛卡尔坐标点

4、shape:笛卡尔任意几何图形

特殊类型

1、IP地址:ip用于IPv4和IPv6地址

2、completion:在浏览器搜索时提供建议

 四、映射类型

1、自动映射

  整数:long

  浮点数:float

  true||false:boolean

  日期:date

  数组:取决于数组的第一个有效值

  对象:object

  字符串:如果不是数字和日期类型,那会被映射为text和keyword两个类型

2、手动映射

复制代码
 1 手工创建mapping
 2 #手工创建mapping
 3 PUT /product2
 4 {
 5   "mappings":{
 6     "properties": {
 7       "date":{
 8         "type":"text"
 9       },
10       "name":{
11         "type":"text"
12       }
13     }
14   }
15 }
复制代码

五、映射参数

1、index:是否对当前字段创建倒排索引,默认为true,如果不创建倒排索引,该字段不会通过索引被搜索到,但是仍会在source元数据中展示

2、analyzer:指定分析器(分词器等)

3、doc_value:正排索引,为了提高排序和聚合效率,默认true,如果确定不需要对字段进行排序或聚合,也不需要通过脚本访问字段值,则可以禁用doc值来节约磁盘

4、search_analyzer:设置单独的查询时分词器

 六、keyword

复制代码
 1 #给city创建一个keyword
 2 PUT fields_test
 3 {
 4   "mappings":{
 5     "properties": {
 6       "city":{
 7         "type": "text",
 8         "fields": {
 9           "raw":{
10             "type":"keyword"
11           }
12         }
13       }
14     }
15   }
16 }
17 PUT fields_test/_doc/1
18 {
19   "city":"New York"
20 }
21 PUT fields_test/_doc/1
22 {
23   "city":"York"
24 }
25 GET fields_test/_search
26 {
27   "query": {
28     "match": {
29       "city": "york"
30     }
31   },
32   "sort": {
33     "city.raw":"asc"
34   },
35   "aggs":{
36     "city":{
37       "terms":{
38         "field": "city.raw"
39       }
40     }
41   }
42 }
复制代码

 

posted @   showMeTheCodes  阅读(50)  评论(0编辑  收藏  举报
编辑推荐:
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
阅读排行:
· AI Agent爆火后,MCP协议为什么如此重要!
· Draw.io:你可能不知道的「白嫖级」图表绘制神器
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· Java使用多线程处理未知任务数方案
点击右上角即可分享
微信分享提示