dynamic针对的是新增的字段,不是对mapping中已有的字段 (原有mapping中的字段不受影响,只影响新增的字段)

当dynamic被设置成false的时候,存在新增字段可以被写入到索引文件中,该字段可以被查看到,但是查询不到,同时索引的mapping也为更新显示该新增的字段。

针对整个索引的优先级最高,那么对索引中某个字段设置dynamic为true就不生效了

# 设置索引的mappings,不用事先创建索引
PUT my_index
{
"mappings": {
"dynamic": false,
"properties": {
"user": {
"properties": {
"name": {
"type": "text"
},
"social_networks": {
"dynamic": true,
"properties": {}
}
}
}
}
}
} # 查看索引的mappings
GET my_index/_mapping # 手动往索引写入一条数据,写入成功(创建的mapping中有这个字段)
PUT my_index/_doc/1
{
"user.name":"haha"
} # 可以查看到数据
GET my_index/_doc/1 # 可以查询出来
GET my_index/_search
{
"query": {
"term": {
"user.name": {
"value": "haha"
}
}
}
} # 手动往索引写入一条数据,写入成功(创建的mapping中没有这个字段)
PUT my_index/_doc/2
{
"age":22
} # 可以查看到数据
GET my_index/_doc/2 # 查看mapping,还是刚开始创建的,未更新age字段
GET my_index/_mapping # 查询不出来
GET my_index/_search
{
"query": {
"term": {
"age": {
"value": 22
}
}
}
} # 索引字段设置dynamic为true的,在这个原有字段下面再新增字段,写入成功
PUT my_index/_doc/3
{
"social_networks.ip":"127.0.0.1"
} # 查看,可以显示
GET my_index/_doc/3 # 查询不出来
GET my_index/_search
{
"query": {
"term": {
"social_networks.ip": {
"value": "127.0.0.1"
}
}
}
} # 查看mapping,还是刚开始创建的,未更新social_networks中的ip字段
GET my_index/_mapping # 往已经存在的文档中更新原先不存在的字段数据,成功
POST my_index/_update/1
{
"doc": {
"social_networks.ip": "127.0.0.1"
}
} # 可以查看到
GET my_index/_doc/1 # 查询不出来
GET my_index/_search
{
"query": {
"term": {
"social_networks.ip": {
"value": "127.0.0.1"
}
}
}
}
# 给新索引创建mapping,设置dynamic为strict
PUT test
{
"mappings": {
"dynamic": "strict",
"properties": {
"user": {
"type": "text"
}
}
}
} # 查看mapping
GET test/_mapping # 新增文档,字段为mapping中已有的字段,成功
PUT test/_doc/1
{
"user":"haha"
} # 新增文档,字段为mapping中没有的字段,报错400
PUT test/_doc/2
{
"name":"haha"
}


#写入文档,查看 Mapping
PUT mapping_test/_doc/1
{
"firstName":"Chan",
"lastName": "Jackie",
"loginDate":"2018-07-24T10:29:48.103Z"
} #查看 Mapping文件
GET mapping_test/_mapping #Delete index
DELETE mapping_test #dynamic mapping,推断字段的类型
PUT mapping_test/_doc/1
{
"uid" : "123",
"isVip" : false,
"isAdmin": "true",
"age":19,
"heigh":180
} #查看 Dynamic
GET mapping_test/_mapping #默认Mapping支持dynamic,写入的文档中加入新的字段
PUT dynamic_mapping_test/_doc/1
{
"newField":"someValue"
} #该字段可以被搜索,数据也在_source中出现
POST dynamic_mapping_test/_search
{
"query":{
"match":{
"newField":"someValue"
}
}
} ######################### 修改为dynamic false #########################
PUT dynamic_mapping_test/_mapping
{
"dynamic": false
} #新增 anotherField
PUT dynamic_mapping_test/_doc/10
{
"anotherField":"someValue"
} #该字段不可以被搜索,因为dynamic已经被设置为false
POST dynamic_mapping_test/_search
{
"query":{
"match":{
"anotherField":"someValue"
}
}
} get dynamic_mapping_test/_doc/10 #修改为strict
PUT dynamic_mapping_test/_mapping
{
"dynamic": "strict"
} #写入数据出错,HTTP Code 400
PUT dynamic_mapping_test/_doc/12
{
"lastField":"value"
} DELETE dynamic_mapping_test

Mapping的更多相关文章

  1. AutoMapper:Unmapped members were found. Review the types and members below. Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type

    异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 应用场景:ViewModel==>Mode映射的时候出错 AutoMappe ...

  2. 使用MyBatis Generator自动创建代码(dao,mapping,poji)

    连接的数据库为SQL server2008,所以需要的文件为sqljdbc4.jar 使用的lib库有: 在lib库目录下新建一个src文件夹用来存放生成的文件,然后新建generatorConfig ...

  3. Nhibernate mapping 文件编写

    生成工具软件 现在生成工具软件有很多了,例如商业软件:NMG.CodeSmith.Visual NHibernate,开源软件:MyGeneration.NHibernate Modeller.AjG ...

  4. mybatis generator.xml 配置 自动生成model,dao,mapping

    generator.xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE gener ...

  5. Spring MVC --->>>No mapping found for HTTP request with URI

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> < ...

  6. elasticsearch 之mapping

    搭好elk 后,有时候会发现kibana 统计数据时,数据类型不对,这个时候就和elasticsearch的mapping有关,虽然我们可以用logstash修改传入es里的数据类型,比如 float ...

  7. KnockoutJS 3.X API 第八章 映射(mapping)插件

    Knockout旨在允许您将任意JavaScript对象用作视图模型. 只要一些视图模型的属性是observables,您可以使用KO将它们绑定到您的UI,并且UI将在可观察属性更改时自动更新. 大多 ...

  8. Elasticsearch 的坑爹事——记录一次mapping field修改过程

    Elasticsearch 的坑爹事 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticsearch做日志的分类检索分析服务,使用了类似如下的_mapp ...

  9. knockoutJS学习笔记09:使用mapping插件

    一.问题引出 通常,我们先定义好html结构或者模板,通过ajax向后台发起请求,后台返回json数据,然后再将json数据渲染到页面上.以博客园个人博客里的个人信息为例子,如图: 1.定义html. ...

  10. [NHibernate]O/R Mapping基础

    系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) 引言 对象和关系数据库 ...

随机推荐

  1. nginx 日志按日期分隔

    #user nobody; user root; worker_processes 1; error_log /spdblogs/nginx/logs/error.log; error_log /sp ...

  2. Assembly.GetManifestResourceStream为null

    想把某个项目的某个文件夹里面的ini文件生成的时候顺便生成为网站和服务文件夹项目 string _path = Path.Combine(AppDomain.CurrentDomain.BaseDir ...

  3. 5-6 Elasticsearch

    Elasticsearch概述 什么是Elasticsearch elastic:富有弹性的 search:搜索 在计算机开发界简称ES 这个软件不是SpringCloud的组件,甚至其他语言都可以使 ...

  4. 推荐系统-协同过滤在Spark中的实现

    作者:vivo 互联网服务器团队-Tang Shutao 现如今推荐无处不在,例如抖音.淘宝.京东App均能见到推荐系统的身影,其背后涉及许多的技术.本文以经典的协同过滤为切入点,重点介绍了被工业界广 ...

  5. 第十一天python3 递归函数

    递归Recursion 函数直接或者间接调用自身就是递归: 递归需要有边界条件,递归前进段.递归返回段: 递归一定要有边界条件: 当边界条件不满足的时候,递归前进: 当边界条件满足的时候,递归返回: ...

  6. 四边形不等式优化 dp (doing)

    目录 1. 四边形不等式与决策单调性 2. 决策单调性优化 dp - (i) 关于符号 1. 四边形不等式与决策单调性 定义(四边形不等式) 设 \(w(x,y)\) 是定义在整数集合上的二元函数,若 ...

  7. mysql 跨库事务XA

    前一段时间在工作中遇到了跨库事务问题,后来在网上查询了一下,现在做一下整理和总结. 1.首先要确保mysql开启XA事务支持 SHOW VARIABLES LIKE '%XA%' 如果innodb_s ...

  8. 为MySQL MGR实现简单的负载均衡代理

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 原创:万里数据库,花家舍 导读 在多写(多节点写入)数据库(例如MySQL MGR的multi-primary mode) ...

  9. Regular采样类定义和测试

    这个算法是均匀采样算法,继承于Sampler类. 类声明: #pragma once #ifndef __REGULAR_HEADER__ #define __REGULAR_HEADER__ #in ...

  10. DP 优化方法合集

    0. 前言 写完这篇文章后发现自己对于 DP 的优化一窍不通,所以补了补 DP 的一些优化,写篇 blog 总结一下. 1. 单调队列/单调栈优化 1.2 算法介绍 这应该算是最基础的 DP 优化方法 ...