什么是映射
文档字段个各个类型 默认是String
Mapping设置
ES支持的数据类型
ES5.*之前
ES5.*之后
数据类型 | 说明 |
字符串类型 | string:分词 keyword:不分词 |
数值类型 | long,integer,short byte(-127~128),double,float,half_float.scaled_float |
boolean | 值:false, "false", true, "true" |
日期 | json没有日期类型json通过指定符合格式的为date类型 "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" |
范围类型 | 支持范围搜索 integer_range,float_range,long_range,double_range,date_range,ip_range(IPV4 或 IPV6 格式的字符串) |
数组类型 | array |
二进制 | binary |
对象类型 | object |
嵌套类型 Nested | nested |
地理位置数据类型(geo_point) |
geo_point |
专用数据类型 |
multi-fields |
可参考:https://www.jianshu.com/p/e8a9feea683c
创建mapping
put:http://127.0.0.1:9200/db
{
"mappings": {
"product": {//type
"properties": {
"productName": {//字段
"type": "text"//数据类型 } } } } }
mapping参数
参数 | 说明 |
analyzer | 分词器 默认:standard |
boost | 字段权重默认1 在通过_all字段查询 根据此字段来权重 |
dynamic | 控制字段新增 true(默认 允许新增) false strict 不能新增文档 |
index | 控制字段是否索引(可搜索) true 是 false否 |
参考:https://www.jianshu.com/p/e8a9feea683c
查看当前索引的映射
http://127.0.0.1:9200/blogs2/product/_mapping
{
"blogs2": {
"mappings": {
"product": {
"properties": {
"price": { "type": "long" }, "productName": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "remark": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "tags": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } } } }
自定义映射
作用定义数据类型 比如数字映射成text 大于小于范围搜索就会无效 还有明确哪些fullText需要分词哪些不需要分词
确切值(Exact values)和全文本(FullText)
es支持很多种数据类型但是主要分为2大类
确切值就是能够确定的值 比如id 日期 通过=就能查询到我们想要的数据
而全文本是需要进行相似度匹配 返回最佳匹配