ES添加字段

背景

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

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Elasticsearch从入门到放弃:瞎说Mapping

前面我们聊了Elasticsearch的索引、搜索和分词器,今天再来聊另一个基础内容——Mapping。Mapping在Elasticsearch中的地位相当于关系型数据库中的schema,它可以用来定义索引中字段的名字、定义字段的数据类型,还可以用来做一些字段的配置。从Elasticsearch7.0开始,Mapping中不在乎需要

Neo4j学习笔记(2)——手动索引和模式索引

和关系数据库一样,Neo4j同样可以创建索引来加快查找速度。在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行。在Neo4j中,其索引是通过属性来创建,便于快速查找节点或者关系。手动索引先来说一下怎样创建手动索引。创建索引采用显示创建,就像添加节点一样添加索引项,一个索引项标识的是一个节点或

Elasticsearch Mapping类型映射概述与元字段详解

本节开始将对ES类型映射机制进行详细解读。Mapping概述Mapping,映射,相当于关系型数据库创建语句,定义文档字段及其类型、索引与存储方式。通常会涉及如下方面:文档中哪些字段需要定义成全文索引字段。文档中哪些字段定义为精确值,例如日期,数字、地理位置等。文档中哪些字段需要被索引(能通

ES中删除索引的mapping字段时应该考虑的点

1.创建新索引2.新索引创建新mapping3.原索引导出数据到新索引4.新索引创建原索引一致的别名5.删除原索引针对于第四步:这个就要用到索引别名了,如果你最开始建索引的时候没有考虑设计索引别名,那就杯具了。你可以把索引的名称设置成name\_v1 别名设置为name,然后代码里面访问搜索的时候连接的其实是别名na

mysql组合索引与字段顺序

很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符。看下面的例子:假设有一张订单表(orders),包含order\_id和product\_id二个字段。一共有31条数据。符合下面语句的数据有5条。执行下面的s