网站域名 评估作价,php网站开发接口文档,站酷设计网站官,临沂网站制作平台文章目录 一#xff0c;119-全文检索-ElasticSearch-映射-mapping创建1#xff0c;Elasticsearch7开始不支持类型type。2#xff0c;mapping2.1 Elasticsearch的Mapping 二#xff0c;120-全文检索-ElasticSearch-映射-添加新的字段映射三#xff0c;121-全文检索-Elastic… 文章目录 一119-全文检索-ElasticSearch-映射-mapping创建1Elasticsearch7开始不支持类型type。2mapping2.1 Elasticsearch的Mapping 二120-全文检索-ElasticSearch-映射-添加新的字段映射三121-全文检索-ElasticSearch-映射-修改映射数据迁移1创建新索引newbank2将旧索引数据迁移到新索引3为新索引指定别名 一119-全文检索-ElasticSearch-映射-mapping创建
1Elasticsearch7开始不支持类型type。
这意味着在创建索引时不需要指定type
2mapping
索引就像是MySQL等关系数据库的表一样而表是有表结构的表结构有字段名词和自动类型组成。
Elasticsearch的索引也有类似的概念但和MySQ的表结构有些区别
索引的结构称之为mappingmapping不必提前创建Elasticsearch会在导入数据时依据具体的数据进行类型推断自动创建mapping
2.1 Elasticsearch的Mapping
定义映射是Elasticsearch中定义索引的模式它指定了索引中每个字段的数据类型和属性如分析器Analyzers、是否可索引index、是否可存储store等。目的映射用于优化搜索性能和定义数据如何被索引和搜索。类型Elasticsearch支持多种字段类型包括text、keyword、date、integer、float、boolean等。分析器Elasticsearch是为全文搜索优化的字段可以指定不同的分析器来处理文本数据如标准分析器、简单分析器等。动态映射Elasticsearch支持动态映射即在索引新类型的数据时可以自动推断字段类型并创建映射。
示例在创建索引时指定mapping
PUT /my-index
{mappings: {properties: {name: {type: text},age: {type: integer},date: {type: date,format: yyyy-MM-dd}}}
}二120-全文检索-ElasticSearch-映射-添加新的字段映射
这一节的主要内容是如何修改索引的mapping。
但我们要修改一个已经存在的索引的mapping时可用使用如下方式。
PUT /my_index/_mapping
{properties: {employee-id: {type: keyword,index: false}}
}PUT /my_index/_mapping这是一个HTTP PUT请求用于指定名为my_index的索引的映射。如果索引不存在这个请求将创建索引并定义其映射如果索引已经存在它将更新现有的映射。 properties这是映射定义中的一个关键部分它包含了索引中所有字段的定义。 employee-id这是字段的名称。 type指定字段的数据类型。在这个例子中keyword类型被指定这意味着这个字段将用于精确匹配并且不会进行全文搜索的分析。 index这个属性指定字段是否应该被索引。在这个例子中index被设置为false表示employee-id字段的数据将不会被索引因此不能被搜索也即是这个字段不能作为搜索条件。这通常用于存储元数据或在文档中作为唯一标识符但不需要进行搜索。
需要注意的是对于mapping的更新仅限于增加新的字段不能修改已有字段的任何属性。
三121-全文检索-ElasticSearch-映射-修改映射数据迁移
正如前面所说index索引的mapping是不能修改的。
如果一定要修改只能重新创建一个索引再把数据迁移到新索引。步骤如下
创建一个新索引指定所需的mapping通过reindex将数据从旧索引迁移到新索引为新索引指定索引别名
以前面自动创建的索引bank为例基于我们想要的mapping创建一个新的索引newbank。
1创建新索引newbank
PUT newbank
{mappings : {properties : {account_number : {type : long},address : {type : text},age : {type : long},balance : {type : long},city : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}},email : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}},employer : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}},firstname : {type : keyword},gender : {type : keyword},lastname : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}},state : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}}}}
}2将旧索引数据迁移到新索引
POST /_reindex
{source: {index: bank,type: acount},dest: {index: newbank}
}3为新索引指定别名
POST /_aliases
{actions: [{remove: {index: bank,alias: bank_alias }},{add: {index: newbank,alias: bank_alias}}]
}
首先移除旧索引的别名同时为新索引指定别名这样在通过别名访问索引数据时实际上访问的是新索引这个变更的过程无需更新使用索引的引用程序。
当然前提是旧索引有别名且应用程序使用的是别名。