ES添加字段

Wesley13
• 阅读 976

背景

Elasticsearch 是schema-less的数据存储方案。可以任意的向索引中添加字段。在此需明确以下背景:

  1. ES新添加的字段只对新数据、新type起作用;原有已经索引的数据不会生效;
  2. 为加快ES的检索和索引效率,构建索引时会指定其mapping结构;添加索引字段即修改mapping;
  3. 目前我们采用两种索引方案:
    1. 指定动态模板,每天生成新索引;
    2. 单索引多type:指定_default_mapping, 其每天的type主动继承mapping定义。

添加字段方案

针对A

该方案比较简单:只需在dynamic template中的mapping中添加新的字段即可;新生成的索引自动应用。刷数时,清理掉旧索引,创建新索引。

针对B

在_default_  mapping中添加字段定义。每日新生成的type会自动应用该字段。

刷数比较麻烦:1. 清理原有数据;使用 _delete_by_query;2. 使所有的type应用新添加的字段,使用

update_all_types, 如下图所示

PUT /my_index/_mapping/my_type?update_all_types

{

"properties": {

"title": {

"type": "string",

"analyzer": "english"

}

}

}

参考:https://stackoverflow.com/questions/36135937/set-update-all-types-to-true-on-elasticsearch

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
071. ElasticSearch 应用场景及核心概念
1\.ES使用场景给网站/APP添加搜索功能。存储、分析数据。管理、交互、分析空间信息,将ES用于GIS。2\.ES简介Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful接口全文检索引擎。Elast
可莉 可莉
2年前
071. ElasticSearch 应用场景及核心概念
1\.ES使用场景给网站/APP添加搜索功能。存储、分析数据。管理、交互、分析空间信息,将ES用于GIS。2\.ES简介Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful接口全文检索引擎。Elast
Stella981 Stella981
2年前
Elasticsearch从入门到放弃:瞎说Mapping
前面我们聊了Elasticsearch的索引、搜索和分词器,今天再来聊另一个基础内容——Mapping。Mapping在Elasticsearch中的地位相当于关系型数据库中的schema,它可以用来定义索引中字段的名字、定义字段的数据类型,还可以用来做一些字段的配置。从Elasticsearch7.0开始,Mapping中不在乎需要
Stella981 Stella981
2年前
Neo4j学习笔记(2)——手动索引和模式索引
和关系数据库一样,Neo4j同样可以创建索引来加快查找速度。在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行。在Neo4j中,其索引是通过属性来创建,便于快速查找节点或者关系。手动索引先来说一下怎样创建手动索引。创建索引采用显示创建,就像添加节点一样添加索引项,一个索引项标识的是一个节点或
Stella981 Stella981
2年前
Elasticsearch Mapping类型映射概述与元字段详解
本节开始将对ES类型映射机制进行详细解读。Mapping概述Mapping,映射,相当于关系型数据库创建语句,定义文档字段及其类型、索引与存储方式。通常会涉及如下方面:文档中哪些字段需要定义成全文索引字段。文档中哪些字段定义为精确值,例如日期,数字、地理位置等。文档中哪些字段需要被索引(能通
Stella981 Stella981
2年前
ES中删除索引的mapping字段时应该考虑的点
1.创建新索引2.新索引创建新mapping3.原索引导出数据到新索引4.新索引创建原索引一致的别名5.删除原索引针对于第四步:这个就要用到索引别名了,如果你最开始建索引的时候没有考虑设计索引别名,那就杯具了。你可以把索引的名称设置成name\_v1 别名设置为name,然后代码里面访问搜索的时候连接的其实是别名na
Wesley13 Wesley13
2年前
mysql组合索引与字段顺序
很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符。看下面的例子:假设有一张订单表(orders),包含order\_id和product\_id二个字段。一共有31条数据。符合下面语句的数据有5条。执行下面的s
Wesley13 Wesley13
2年前
MongoDB性能篇
一、索引MongoDB提供了多样性的索引支持,索引信息被保存在system.indexes中,且默认总是为\_id创建索引,它的索引使用基本和MySQL等关系型数据库一样。其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存储都有相同或相似的索引实现及使用接口并不足为奇。1.基础索引在字段age
Wesley13 Wesley13
2年前
sql 优化建议
1、查询语句,尽量避免查询全部,避免写select\fromtable,查哪个写哪个,提高效率; 更新语句,能update具体字段的,不要update所有字段,提升效率。 要尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引 2、一张表中添加索引太少不行,索引的添加可以让查询
京东云开发者 京东云开发者
4个月前
浅析MySQL代价模型:告别盲目使用EXPLAIN,提前预知索引优化策略 | 京东云技术团队
背景在MySQL中,当我们为表创建了一个或多个索引后,通常需要在索引定义完成后,根据具体的数据情况执行EXPLAIN命令,才能观察到数据库实际使用哪个索引、是否使用索引。这使得我们在添加新索引之前,无法提前预知数据库是否能使用期望的索引。更为糟糕的是,有时