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相关推荐

  1. ES mapping可以修改include_in_all,也可以修改index_options,norm,但是无法修改_all属性!...

    ES mapping可以修改include_in_all,也可以修改index_options,norm,但是无法修改_all属性! curl -XPOST "http://localhos ...

  2. ES mapping 映射参数第一期之~ Analyzer

    前言 本文是ES mapping 映射参数第一期~ Analyzer. 文中使用 ES versions 7.1,其他版本可能有偏差. mapping 映射参数预计是每周3章,有喜欢的欢迎关注,一起交 ...

  3. Elasticsearch和Hive整合,将hive数据同步到ES中

    1 Elasticsearch整合Hive 1.1 软件环境 Hadoop软件环境 Hive软件环境 ES软件环境 1.2 ES-Hadoop介绍 1.2.1 官网 https://www.elast ...

  4. ES-Hadoop学习之ES和HDFS数据交换

    ES作为强大的搜索引擎,HDFS是分布式文件系统.ES可以将自身的Document导入到HDFS中用作备份,ES也可以将存储在HDFS上的结构化文件导入为ES的中的Document.而ES-Hadoo ...

  5. java spark es_JavaSpark写RDD到ES时指定文档ID的

    spark版本:2.3 ES版本:7.1 问题描述: 在通过JavaSpark写入数据到ES过程中,需要对文档id进行手动指定. 在查询ES官网之后,返现官网介绍中是有次方法的: 可以看到,JavaE ...

  6. [转载] AWS之EMR数据ES通过数据仓库HIVE同步S3

    参考链接: AWS创建S3存储桶 本篇主要讲解利用EMR将ES中PB级数据利用HIVE数据仓库同步到S3,从而利用Athena对数据进行分析计算: EMR搭建 1 软件配置(如图)  注意:hive和 ...

  7. ES摄入性能优化(插入提高了2倍+ 17w/s到37w/s)

    es在没有优化之前,用spark-sql给es的新index中入数据qps顶峰为17w/s,在优化之后首次插入index中,顶峰的qps为40w/s es的集群规模为: 集群配置 主节点 m5.lar ...

  8. 扩展:hive插入数据到ES

    Hive建表 加入hive和es的相关jar包(此例以es5.5.2为例,jar去官网下载) add jar file:///data/xj6500_data/lib/elasticsearch-ha ...

  9. scala中json与case class对象的转换, spark读取es json转换成case class

    ilinux_one scala中json与对象的转换 遇到的问题 因为要把spark从es读出来的json数据转换为对象,开始想用case class定义类型,通过fastjson做转换.如下 复制 ...

  10. [用户分享]CloudCanal助力万店掌MySQL同步ES构建宽表场景

    作者介绍 蒋鹏程,苏州万店掌软件技术有限公司 前言 CloudCanal 近期提供了自定义代码构建宽表能力,我们第一时间参与了该特性内测,并已落地生产稳定运行.开发流程详见官方文档 <Cloud ...

最新文章

  1. 我是如何在天猫、蚂蚁金服、百度等大厂面试中被拒的 | 掘金技术征文
  2. VM页面中遍历枚举类
  3. 转:更改pip源至国内镜像,显著提升下载速度
  4. Flash,EEPROM区别
  5. mysql输入错误怎样更正_HotDB MySQL 篇| MySQL 源码系列的补充与更正
  6. spring 的jar包解释
  7. element走马灯自动_详细element-ui的走马灯carousel轻松实现自适应全屏banner详细过程...
  8. 梯度消失的有效解决方法-batch normalization
  9. ensp配置access口_华为路由交换技术 | 虚拟局域网VLAN详解与配置
  10. 毕设题目:Matlab元胞自动机城市规划
  11. python-普通数据分析-科比职业生涯数据分析
  12. nxlog管理配置linux,如何使用NXLOG管理配置WindowsServer日志.PDF
  13. Android 9.0 10.0 手动安装Persistent app失败的解决方案
  14. c语言鸡尾酒排序的例子,经典算法——鸡尾酒排序(冒泡算法改良)
  15. OpenFPGA系列(四) OpenFPGA 架构描述文件和仿真配置文件
  16. 测试分享之抽奖【二】
  17. 办理房产证,重要的三张纸
  18. 机器学习训练过程中常见问题
  19. string类型 的 push_back()
  20. Linux实战之KVM虚拟机安装爱快软路由系统

热门文章

  1. python画满天星_跟我学解Python题-海龟制图满天星
  2. 互联网、大公司常用的英文缩写
  3. windows下录制音频
  4. 从微博数据看国产手机格局 新四大取代中华酷联
  5. 云计算及其支撑技术简介
  6. 关于电脑开机自检声音的检测
  7. 嵌入式软件开发工程师未来的薪资待遇是什么情况
  8. 解锁小众网站 站在巨人的肩膀上
  9. 7440 GT540
  10. 使用OpenCV和Python构建自己的车辆检测模型