中山 网站建设一条龙,石家庄站建设费用多少,做网站 用asp,郑州加盟做网站索引库就类似数据库表#xff0c;mapping映射就类似表的结构。
我们要向es中存储数据#xff0c;必须先创建“库”和“表”。 2.1.mapping映射属性
mapping是对索引库中文档的约束#xff0c;常见的mapping属性包括#xff1a; type#xff1a;字段数据类型#xff0c;…索引库就类似数据库表mapping映射就类似表的结构。
我们要向es中存储数据必须先创建“库”和“表”。 2.1.mapping映射属性
mapping是对索引库中文档的约束常见的mapping属性包括 type字段数据类型常见的简单类型有 字符串text可分词的文本、keyword精确值例如品牌、国家、ip地址 数值long、integer、short、byte、double、float、 布尔boolean 日期date 对象object index是否创建索引默认为true analyzer使用哪种分词器 properties该字段的子字段 其中index如果设置为false,表示不参与搜索一些比如image的路径地址邮箱等可以设置为false; 例如下面的json文档
{age: 21,weight: 52.1,isMarried: false,info: 黑马程序员Java讲师,email: zyitcast.cn,score: [99.1, 99.5, 98.9],name: {firstName: 云,lastName: 赵}
}
对应的每个字段映射mapping age类型为 integer参与搜索因此需要index为true无需分词器 weight类型为float参与搜索因此需要index为true无需分词器 isMarried类型为boolean参与搜索因此需要index为true无需分词器 info类型为字符串需要分词因此是text参与搜索因此需要index为true分词器可以用ik_smart email类型为字符串但是不需要分词因此是keyword不参与搜索因此需要index为false无需分词器 score虽然是数组但是我们只看元素的类型类型为float参与搜索因此需要index为true无需分词器 name类型为object需要定义多个子属性 name.firstName类型为字符串但是不需要分词因此是keyword参与搜索因此需要index为true无需分词器 name.lastName类型为字符串但是不需要分词因此是keyword参与搜索因此需要index为true无需分词器 2.2.索引库的CRUD
这里我们统一使用Kibana编写DSL的方式来演示。 2.2.1.创建索引库和映射
基本语法 请求方式PUT 请求路径/索引库名可以自定义 请求参数mapping映射
格式 PUT /索引库名称
{mappings: {properties: {字段名:{type: text,analyzer: ik_smart},字段名2:{type: keyword,index: false},字段名3:{properties: {子字段: {type: keyword}}},// ...略}}
} 示例
# 创建索引库
PUT /heima
{mappings: {properties: {info:{type: text,analyzer: ik_smart},email:{type:keyword,index:false},name:{type: object,properties:{firstName:{type:keyword},lastName:{type:keyword}}}}}
} 2.2.2.查询索引库
基本语法 请求方式GET 请求路径/索引库名 请求参数无
格式
GET /索引库名 示例 2.2.3.修改索引库
倒排索引结构虽然不复杂但是一旦数据结构改变比如改变了分词器就需要重新创建倒排索引这简直是灾难。因此索引库一旦创建无法修改mapping。 虽然无法修改mapping中已有的字段但是却允许添加新的字段到mapping中因为不会对倒排索引产生影响。
语法说明
PUT /索引库名/_mapping
{properties: {新字段名:{type: integer}}
} 示例 2.2.4.删除索引库
语法 请求方式DELETE 请求路径/索引库名 请求参数无
格式
DELETE /索引库名
在kibana中测试 2.2.5.总结
索引库操作有哪些 创建索引库PUT /索引库名 查询索引库GET /索引库名 删除索引库DELETE /索引库名 添加字段PUT /索引库名/_mapping