ES mapping
ES Mapping:映射
ES的mapping非常类似于java中的数据类型,可以用来设置字段中存储的数据的类型。但ES中的mapping的作用比数据类型广泛一些:
- 定义索引这里面的字段和名称
- 定义字段的数据类型,字符串、布尔、数字......
- 字段,倒排索引相关的配置,是否分词。
当你的查询没有返回相应的数据, 你的mapping很有可能有问题。当你拿不准的时候, 直接检查你的mapping。
剖析mapping:
一个mapping由一个或多个analyzer组成, 一个analyzer又由一个或多个filter组成的。当ES索引文档的时候,它把字段中的内容传递给相应的analyzer,analyzer再传递给各自的filters。
filter的功能:一个filter就是一个转换数据的方法, 输入一个字符串,这个方法返回另一个字符串,比如一个将字符串转为小写的方法就是一个filter很好的例子。
一个analyzer由一组顺序排列的filter组成,执行分析的过程就是按顺序一个filter一个filter依次调用, ES存储和索引最后得到的结果。
总结来说, mapping的作用就是执行一系列的指令将输入的数据转成可搜索的索引项。
创建mapping:
ES 创建mapping 可以由ES自动创建,也可以用户自定义创建。
动态映射(dynamic mapping)
- 字段及其映射类型不必在使用前事先定义好,这得益于动态映射的应用。
- 动态映射能够根据文档索引过程来自动生成映射类型和字段名。
- 动态映射规则可以用来定义新类型和新字段的映射。
显式映射(explicit mappings)--- 手动定义mapping映射
如果你比 ES 通过猜测来确定映射更加了解你的数据,那么定义一个动态映射将会很有用。不过有时候你可能需要指定自己的显式映射。
显式映射可以在创建索引时候定义,或者用 mapping API 来为已有的索引添加映射类型或字段。
从上面ES自动生成的mapping映射中可以看到mapping的一些属性,如type、fields、keywords、ignore_above等属性信息。在我们自己定义索引的mapping时可以手动设置这些属性值。下面我们看看mapping的一些常用属性以及属性代表的含义:
一级属性 | 二级属性 | 三级属性 | 说明 |
dynamic | 新增字段自动模式;true:表示自动识别新字段并创建索引,false:不自动索引新字段,strict:遇到未知字段,抛异常,不能存入 | ||
_timestamp | 是否使用时间戳,ES会自动加时间戳,使用的话请百度 | ||
properties | 属性列表(类似数据库多个字段定义) | ||
{字段名} | es中存储数据的字段 | ||
type | 数据类型,可以说设置任何es支持的数据类型 | ||
index | 映射选型,meta-fields、fields or properties 两种映射类型 | ||
doc_values | 布尔值, 对not_analyzed字段,默认都是开启,分词字段不能使用,对排序和聚合能提升较大性能,节约内存 | ||
format | 如果数据类型为日期格式,传入值得时候是字符串,ES需要一个格式进行识别,如:yyyy-MM-dd HH:mm: ss | ||
analyzer | 指定分词器,如ik,ansj(中文分词) | ||
boost | 浮点型,字段级别的分数加权(权重) | ||
ignore_above | 超过多少字符,就不处理,分词性能损耗较大,对字符串较长的可不分词 | ||
null_value | 设置一些缺失字段的初始化值,只有string可以使用,分词字段的null值也会被分词 | ||
store | 是否单独设置此字段的是否存储而从_source字段中分离,默认是false,只能搜索,不能获取值 | ||
search_analyzer | 指定搜索时的分词器,默认跟ananlyzer是一致的,比如index时用standard+ngram,搜索时用standard用来完成自动提示功能 | ||
其它 | similarity,term_vector,norms,include_in_all,index_options,fielddata,ignore_malformed,precision_step | ||
_source | enable |
用于存储整个文档的原始值,默认为true, 一般不会设为false, 那会影响很多功能的使用。 |
dynamic 可以设成 false、true 、strict,三个值的对比
true | false | strict | |
文档可索引 | Y | Y | Y |
字段可索引 | Y | N | N |
mapping被更新 |
Y | N | N |
Meta-fields
元数据字段用于定义文档的元数据字段的特征,文档的元数据字段主要包括_index、_type、_id、_source这4个字段。
Fields or properties
属性字段列表,通过properties字段定义整个文档有效载荷的各字段的数据类型、分词器等属性。
自定义mapping:
PUT "index_2" # 索引名
{"mappings": {"user2": { # 类型名"dynamic":"strict", #dynamic属性"properties": { # 字段列表"age": { #字段名"type": "long" #字段类型},"birthday": {"type": "date"},"name": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}}
}
ES mapping相关推荐
- ES mapping可以修改include_in_all,也可以修改index_options,norm,但是无法修改_all属性!...
ES mapping可以修改include_in_all,也可以修改index_options,norm,但是无法修改_all属性! curl -XPOST "http://localhos ...
- ES mapping 映射参数第一期之~ Analyzer
前言 本文是ES mapping 映射参数第一期~ Analyzer. 文中使用 ES versions 7.1,其他版本可能有偏差. mapping 映射参数预计是每周3章,有喜欢的欢迎关注,一起交 ...
- Elasticsearch和Hive整合,将hive数据同步到ES中
1 Elasticsearch整合Hive 1.1 软件环境 Hadoop软件环境 Hive软件环境 ES软件环境 1.2 ES-Hadoop介绍 1.2.1 官网 https://www.elast ...
- ES-Hadoop学习之ES和HDFS数据交换
ES作为强大的搜索引擎,HDFS是分布式文件系统.ES可以将自身的Document导入到HDFS中用作备份,ES也可以将存储在HDFS上的结构化文件导入为ES的中的Document.而ES-Hadoo ...
- java spark es_JavaSpark写RDD到ES时指定文档ID的
spark版本:2.3 ES版本:7.1 问题描述: 在通过JavaSpark写入数据到ES过程中,需要对文档id进行手动指定. 在查询ES官网之后,返现官网介绍中是有次方法的: 可以看到,JavaE ...
- [转载] AWS之EMR数据ES通过数据仓库HIVE同步S3
参考链接: AWS创建S3存储桶 本篇主要讲解利用EMR将ES中PB级数据利用HIVE数据仓库同步到S3,从而利用Athena对数据进行分析计算: EMR搭建 1 软件配置(如图) 注意:hive和 ...
- ES摄入性能优化(插入提高了2倍+ 17w/s到37w/s)
es在没有优化之前,用spark-sql给es的新index中入数据qps顶峰为17w/s,在优化之后首次插入index中,顶峰的qps为40w/s es的集群规模为: 集群配置 主节点 m5.lar ...
- 扩展:hive插入数据到ES
Hive建表 加入hive和es的相关jar包(此例以es5.5.2为例,jar去官网下载) add jar file:///data/xj6500_data/lib/elasticsearch-ha ...
- scala中json与case class对象的转换, spark读取es json转换成case class
ilinux_one scala中json与对象的转换 遇到的问题 因为要把spark从es读出来的json数据转换为对象,开始想用case class定义类型,通过fastjson做转换.如下 复制 ...
- [用户分享]CloudCanal助力万店掌MySQL同步ES构建宽表场景
作者介绍 蒋鹏程,苏州万店掌软件技术有限公司 前言 CloudCanal 近期提供了自定义代码构建宽表能力,我们第一时间参与了该特性内测,并已落地生产稳定运行.开发流程详见官方文档 <Cloud ...
最新文章
- 我是如何在天猫、蚂蚁金服、百度等大厂面试中被拒的 | 掘金技术征文
- VM页面中遍历枚举类
- 转:更改pip源至国内镜像,显著提升下载速度
- Flash,EEPROM区别
- mysql输入错误怎样更正_HotDB MySQL 篇| MySQL 源码系列的补充与更正
- spring 的jar包解释
- element走马灯自动_详细element-ui的走马灯carousel轻松实现自适应全屏banner详细过程...
- 梯度消失的有效解决方法-batch normalization
- ensp配置access口_华为路由交换技术 | 虚拟局域网VLAN详解与配置
- 毕设题目:Matlab元胞自动机城市规划
- python-普通数据分析-科比职业生涯数据分析
- nxlog管理配置linux,如何使用NXLOG管理配置WindowsServer日志.PDF
- Android 9.0 10.0 手动安装Persistent app失败的解决方案
- c语言鸡尾酒排序的例子,经典算法——鸡尾酒排序(冒泡算法改良)
- OpenFPGA系列(四) OpenFPGA 架构描述文件和仿真配置文件
- 测试分享之抽奖【二】
- 办理房产证,重要的三张纸
- 机器学习训练过程中常见问题
- string类型 的 push_back()
- Linux实战之KVM虚拟机安装爱快软路由系统