固安县住房和城乡建设局网站,长沙专业网站建设怎么做,家装平面设计主要做什么,做网站腾讯云服务器5 映射
上边章节安装了ik分词器#xff0c;如果在索引和搜索时去使用ik分词器呢#xff1f;如何指定其它类型的field#xff0c;比如日期类型、数 值类型等。
本章节学习各种映射类型及映射维护方法。
5.1 映射维护方法
1、查询所有索引的映射#xff1a;
GET#xf…5 映射
上边章节安装了ik分词器如果在索引和搜索时去使用ik分词器呢如何指定其它类型的field比如日期类型、数 值类型等。
本章节学习各种映射类型及映射维护方法。
5.1 映射维护方法
1、查询所有索引的映射
GET http://localhost:9200/_mapping
2、创建映射
post 请求http://localhost:9200/xc_course/doc/_mapping
一个例子
{ properties: { name: { type: text },description: { type: text },studymodel: { type: keyword } }
}3、更新映射
映射创建成功可以添加新字段已有字段不允许更新。
4、删除映射
通过删除索引来删除映射。
5.2 常用映射类型
下图是ES6.2核心的字段类型如下 字符串包括text和keyword两种类型
5.2.1 String字符串类型
5.2.1.1 text文本字段类型
type 为 text 时
1analyzer
通过analyzer属性指定分词器。
下边指定name的字段类型为text使用ik分词器的ik_max_word分词模式。
name: { type: text, analyzer:ik_max_word
}上边指定了analyzer是指在索引和搜索都使用ik_max_word如果单独想定义搜索时使用的分词器则可以通过
search_analyzer属性。
对于ik分词器建议是索引时使用细颗粒分成器ik_max_word将搜索内容进行细粒度分词搜索时使用粗颗粒分成器ik_smart提高搜索精确性。
因为搜索时用细粒度分词器ik_max_word的话你输入的一句话就会分成很细的词去搜索这显然不合理。比如你想搜索中华人民共和国人民大会堂相关的文章输入 中华人民共和国人民大会堂时就会分成 中华、华人、人民 去搜索这时候就可能会匹配到很多文章这显然没有提高搜索的精确度
name: { type: text, analyzer:ik_max_word, search_analyzer:ik_smart
}2index
通过index属性指定是否索引。
默认为indextrue即要进行索引只有进行索引才可以从索引库搜索到。
但是也有一些内容不需要索引比如商品图片地址只被用来展示图片不进行搜索图片此时可以将index设置
为false。
删除索引重新创建映射将pic的index设置为false尝试根据pic去搜索结果搜索不到数据
pic: { type: text, index:false
}3store
是否在source之外存储每个文档索引后会在 ES中保存一份原始文档存放在_source中一般情况下不需要设置 store为true因为在_source中已经有一份原始文档了。测试
删除xc_course/doc下的映射
创建新映射Post http://localhost:9200/xc_course/doc/_mapping
{ properties: { name: {type: text, analyzer:ik_max_word,search_analyzer:ik_smart }, description: { type: text, analyzer:ik_max_word, search_analyzer:ik_smart },pic:{ type:text, index:false },studymodel:{ type:text } }
}插入文档
http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000
{ name:Bootstrap开发框架, description:Bootstrap是由Twitter推出的一个前台页面开发框架在行业之中使用较为广泛。此开发框架包 含了大量的CSS、JS程序代码可以帮助开发者尤其是不擅长页面开发的程序人员轻松的实现一个不受浏览器限制的 精美界面效果。, pic:group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg, studymodel:201002
}查询测试
Get http://localhost:9200/xc_course/_search?qname:开发
Get http://localhost:9200/xc_course/_search?qdescription:开发
Get http://localhost:9200/xc_course/_search? qpic:group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg
Get http://localhost:9200/xc_course/_search?qstudymodel:201002
通过测试发现name和description都支持全文检索pic不可作为查询条件。
5.2.2.2 keyword关键字字段类型
上边介绍的text文本字段在映射时要设置分词器keyword字段为关键字字段通常搜索keyword是按照整体搜
索所以创建keyword字段的索引时是不进行分词的比如邮政编码、手机号码、身份证等。keyword字段通常
用于过虑、排序、聚合等。
测试
更改映射
{ properties: { studymodel:{ type:keyword },name:{ type:keyword } }
}插入文档
{name: java编程基础, description: java语言是世界第一编程语言在软件开发领域使用人数最多。, pic:group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg, studymodel: 201001
}根据studymodel查询文档
搜索http://localhost:9200/xc_course/_search?qname:java
name是keyword类型所以查询方式是精确查询。
5.2.3 date日期类型
日期类型不用设置分词器。
通常日期类型的字段用于排序。
1)format
通过format设置日期格式
例子
下边的设置允许date字段存储年月日时分秒、年月日及毫秒三种格式。
{ properties: { timestamp: { type: date, format: yyyy‐MM‐dd HH:mm:ss||yyyy‐MM‐dd } }
}插入文档
Post :http://localhost:9200/xc_course/doc/3
{name: spring开发基础, description: spring 在java领域非常流行java程序员都在用。, studymodel: 201001, pic:group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg, timestamp:2018‐07‐04 18:28:58
}5.2.4 数值类型
下边是ES支持的数值类型 1、尽量选择范围小的类型提高搜索效率
2、对于浮点数尽量用比例因子比如一个价格字段单位为元我们将比例因子设置为100这在ES中会按 分 存
储映射如下
price: { type: scaled_float, scaling_factor: 100
},由于比例因子为100如果我们输入的价格是23.45则ES中会将23.45乘以100存储在ES中。
如果输入的价格是23.456ES会将23.456乘以100再取一个接近原始值的数得出2346。
使用比例因子的好处是整型比浮点型更易压缩节省磁盘空间。
如果比例因子不适合则从下表选择范围小的去用 更新已有映射并插入文档
http://localhost:9200/xc_course/doc/3
{name: spring开发基础, description: spring 在java领域非常流行java程序员都在用。, studymodel: 201001, pic:group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg, timestamp:2018‐07‐04 18:28:58, price:38.6
}5.2.5 综合例子
创建如下映射
posthttp://localhost:9200/xc_course/doc/_mapping
{ properties: { description: { type: text, analyzer: ik_max_word, search_analyzer: ik_smart },name: { type: text, analyzer: ik_max_word, search_analyzer: ik_smart },pic:{ type:text, index:false }, price: { type: float },studymodel: { type: keyword },timestamp: { type: date, format: yyyy‐MM‐dd HH:mm:ss||yyyy‐MM‐dd||epoch_millis } }
}插入文档
Post: http://localhost:9200/xc_course/doc/1
{name: Bootstrap开发,description: Bootstrap是由Twitter 推出的一个前台页面开发框架是一个非常流行的开发框架此框架集成了多种页面效果。此开发框架包含了大量的CSS、JS程序代码可以帮助开发者尤其是不擅长页面开发的程序人员轻松的实现一个不受浏览器限制的精 美界面效果。,studymodel: 201002, price:38.6, timestamp:2018-04-25 19: 11: 35, pic: group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg
}