Mapping






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的更多相关文章
- 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 ...
- 使用MyBatis Generator自动创建代码(dao,mapping,poji)
连接的数据库为SQL server2008,所以需要的文件为sqljdbc4.jar 使用的lib库有: 在lib库目录下新建一个src文件夹用来存放生成的文件,然后新建generatorConfig ...
- Nhibernate mapping 文件编写
生成工具软件 现在生成工具软件有很多了,例如商业软件:NMG.CodeSmith.Visual NHibernate,开源软件:MyGeneration.NHibernate Modeller.AjG ...
- mybatis generator.xml 配置 自动生成model,dao,mapping
generator.xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE gener ...
- Spring MVC --->>>No mapping found for HTTP request with URI
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> < ...
- elasticsearch 之mapping
搭好elk 后,有时候会发现kibana 统计数据时,数据类型不对,这个时候就和elasticsearch的mapping有关,虽然我们可以用logstash修改传入es里的数据类型,比如 float ...
- KnockoutJS 3.X API 第八章 映射(mapping)插件
Knockout旨在允许您将任意JavaScript对象用作视图模型. 只要一些视图模型的属性是observables,您可以使用KO将它们绑定到您的UI,并且UI将在可观察属性更改时自动更新. 大多 ...
- Elasticsearch 的坑爹事——记录一次mapping field修改过程
Elasticsearch 的坑爹事 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticsearch做日志的分类检索分析服务,使用了类似如下的_mapp ...
- knockoutJS学习笔记09:使用mapping插件
一.问题引出 通常,我们先定义好html结构或者模板,通过ajax向后台发起请求,后台返回json数据,然后再将json数据渲染到页面上.以博客园个人博客里的个人信息为例子,如图: 1.定义html. ...
- [NHibernate]O/R Mapping基础
系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) 引言 对象和关系数据库 ...
随机推荐
- 如何用 银行卡OCR 接口进行快速开发
最近公司项目有一个银行卡识别的小需求,想着如果用现成的API就可以大大提高开发效率,在网上的API商店搜索了一番,发现了 APISpace,它里面的银行卡OCR非常符合我的开发需求. 银行卡OCR ...
- CF1703E Mirror Grid 题解
给定一个矩阵,判断最少将多少个格反转后使得旋转零度,九十度,一百八十度,二百七十度相等. 枚举矩阵每个位置是 \(0\) 还是 \(1\),若已经判断过则跳过,全统 \(1\) 和全统 \(0\) 取 ...
- SkiaSharp 之 WPF 自绘 五环弹动球(案例版)
此案例基于拖曳和弹动球两个技术功能实现,如有不懂的可以参考之前的相关文章,属于递进式教程. 五环弹动球 好吧,名字是我起的,其实,你可以任意个球进行联动弹动,效果还是很不错的,有很多前端都是基于这个特 ...
- Linux 03 用户管理
参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 概述 Linux ...
- 使用Docker搭建Nextcloud私有网盘
一.准备材料 安装环境:linux 工具:docker 软件:MySql.Nextcloud 二.安装Docker 安装Docker:https://www.cnblogs.com/jzcn/p/15 ...
- 👍CleanShot X 3.1.1 破解版 (超强屏幕截图录像工具) (TNT + 免激活)
软件语言为ENGLISH,英文不好的劝退! 软件介绍/功能 CleanShot X 3 是一款Mac超强截图以及屏幕录制工具.支持:区域截图.窗口截图.滚动截图.延时截图.屏幕录制.贴图.截图时隐藏桌 ...
- java方法---递归
java方法递归 1.什么是递归 就是自己调用自己: 2.递归结构的两个部分 递归头:什么时候不调用自身方法.如果仅有头,将陷入死循环.递归体:什么时候需要调用自身方法.
- 青源Talk第8期|苗旺:因果推断,观察性研究和2021年诺贝尔经济学奖
biobank 英国的基金数据因果推断和不同的研究互相论证,而非一个研究得到的接了就行.数据融合,data fusion,同一个因果问题不同数据不同结论,以及历史上的数据,来共同得到更稳健.更高效的推 ...
- 【java】学习路径20-Date、Calender日期与时间
简单的说,Date和Calender基本上是差不多的. 在最开始的时候只有Date,没有Calender. 在jdk不断更新的时候,发现了Date有一点缺陷,于是推出了Calender. // Dat ...
- 最短路径算法-迪杰斯特拉(Dijkstra)算法在c#中的实现和生产应用
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先遍历思想),直到扩展到终点为止 贪心算法(Greedy ...