古镇小企业网站建设,网站加alt属性对优化有影响吗,桂林两江四湖在哪里,wordpress企业免费模板下载接上篇《5、安装IK分词器》 上一篇我们进行了IK分词器的安装与测试#xff0c;本篇我们来学习ElasticSearch的索引库的操作#xff0c;学习mapping映射属性以及CRUD操作。
一、前情回顾
我们在前几篇学习了ElasticSearch的基本概念#xff0c;并动手搭建了ElasticSearch环…接上篇《5、安装IK分词器》 上一篇我们进行了IK分词器的安装与测试本篇我们来学习ElasticSearch的索引库的操作学习mapping映射属性以及CRUD操作。
一、前情回顾
我们在前几篇学习了ElasticSearch的基本概念并动手搭建了ElasticSearch环境从本篇开始我们就实际来学习ElasticSearch的实操。
我们知道在ElasticSearch中有“索引库”的概念这个概念就像数据库中的“表”而索引库中有很多的文档就类似于数据库中一行一行的数据。那我们应该知道数据库是先创建表然后再添加数据那ElasticSearch也是一样需要现有索引库然后才能在里面添加文档。所以我们的学习顺序也是先学习索引库的操作后面再学习文档的操作。
创建一个索引库就像建表一样你的语句是需要指定一个Schema的即对字段的一些约束。那么索引库也是要指定相应的mapping映射这个mapping映射就是对文档的约束。我们来学习一下mapping映射的约束和数据库的约束有什么差别然后再动手实践索引库的增删改查即CRUD操作。
二、mapping映射
1、mapping属性
mapping是对索引库中文档的约束我们打开ES的官网可以看到在“mapping参数”一栏有很多的mapping属性我们可以根据需要一个个的学习 地址https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html 我们这里只讲解比较核心的mapping属性常见的mapping属性包括 1type:字段数据类型常见的简单类型有: ●字符串:text(可分词的文本)、keyword精确值例如国家、品牌、IP地址 ●数值:long、integer、short、byte、double、float ●布尔:boolean ●日期:date ●对象:object 2index:是否创建索引默认为true 3analyzer:使用哪种分词器与上面的text可分词文本结合。 4properties:该字段的子字段 其他的属性大家可以参考官方文档了解。
三、创建索引库
ES中通过Restful请求操作索引库、文档。请求内容用DSL语句Domain Specific Language领域特定语言来表示。创建索引库和mapping的DSL语法如下:
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:{properties:{firstName:{type:keyword}}},// ...略}}
}
上述代码用来定义一个名为heima的索引Index并指定了该索引中文档的字段映射Mappings。字段映射定义了文档中各个字段的数据类型、索引方式、分词器等属性。下面是对这段DSL的详细解读
1、创建索引:
PUT /heima这个命令用于创建一个名为heima的索引。如果索引已经存在这个命令会尝试更新它的设置和映射取决于Elasticsearch的版本和配置。
2、映射定义:
mappings:{...}这一部分定义了索引中文档的字段映射。字段映射指定了文档中每个字段的属性。
3、字段属性:
1info:{...}定义了名为info的字段。 ●type: text指定字段类型为text这意味着该字段的内容会被全文索引适用于全文搜索。 ●analyzer:ik_smart指定使用ik_smart分词器。ik_smart是IK Analyzer插件提供的一种中文分词器它会对中文文本进行智能分词适合需要精确匹配的搜索场景。 2email:{...}定义了名为email的字段。 ●type :keyword指定字段类型为keyword适用于精确值搜索如过滤、排序和聚合。 ●index:false设置该字段不被索引。这意味着该字段的内容不会被存储到倒排索引中因此无法通过该字段进行搜索。这通常用于那些只需要在查询结果中显示但不需要搜索的字段。 3name:{...}定义了名为name的复合字段这里它是一个对象类型。 ●properties:{...}在对象类型中通过properties关键字定义对象内部的字段。 ●firstName:{...}定义了name对象内部的firstName字段。 ●type:keyword指定字段类型为keyword适用于需要精确匹配的搜索场景。
我们打开Kibana图形化界面打开Dev Tools来编写一段创建索引库的DSL 点击右边的执行按钮就算是创建索引库成功了。
四、索引库的增删改查
1、查看索引库
语法
GET /索引库名
示例:
GET /heima
2、删除索引库
语法
DELETE /索引库名
示例:
DELETE /heima
3、修改索引库
索引库和mapping一旦创建无法修改但是可以添加新的字段语法如下
PUT /索引库名/_mapping
{properties:{新字段名:{type: integer}}
}
示例
PUT /heima/_mapping
{properties:{age:{type: integer}}
}
4、演示
1查询heima索引库 这个查询ElasticSearch中heima索引库的结果提供了关于该索引的详细信息包括别名aliases、映射mappings、以及设置settings。下面是对这些信息的简要解释 ●别名Aliases: aliases : { }表示该索引没有定义任何别名。别名可以用于在不改变索引实际名称的情况下对索引进行引用或操作。 ●映射Mappings: 映射部分定义了索引中文档的字段及其属性。 email字段类型为keyword且不被索引index : false这意味着不能通过该字段进行搜索但可以在返回结果中显示。 info字段类型为text使用ik_smart分词器进行全文索引适用于全文搜索。 name字段是一个复合字段对象类型包含firstName和lastName两个子字段它们都是keyword类型适用于精确匹配搜索。 ●设置Settings: 设置部分包含了索引的配置信息。 number_of_shards : 1表示索引被分割成一个分片。分片是Elasticsearch分布式存储和搜索的基本单位。 number_of_replicas : 1表示每个分片有一个副本。副本用于提高数据的可用性和搜索性能。 routing : { ... }路由设置这里指定了数据分配时的偏好设置_tier_preference : data_content这通常与Elasticsearch的数据层tier配置相关用于优化数据存储和访问。 creation_date : 1737254104241索引的创建时间戳。 uuid : 9YJoz4P4Tg6K7eQ0fD3MQw索引的唯一标识符。 version : { created : 7120199 }索引创建时的Elasticsearch版本号。 总结来说这个查询结果提供了heima索引的完整配置信息包括字段映射、分片数量、副本数量、路由设置、创建时间、唯一标识符和创建时的Elasticsearch版本号。这些信息对于理解索引的结构和行为以及进行索引管理和优化非常有用。
2修改heima索引库
给heima数据库添加age属性 此时再查看索引库就可以看到新加的属性 如果此时我们重复添加age属性即使把type改为long也不行就会报错 索引库是不能修改的。
3删除heima索引库
运行删除语法 运行完毕后再次查询heima索引库发现没有了 删除成功。
至此关于ElasticSearch的索引库的操作就讲解完毕了。下一篇我们来学习文档的操作。
参考《黑马Elasticsearch全套教程》 转载请注明出处https://blog.csdn.net/acmman/article/details/145240260