在es中,mapping的存在类似数据库的表结构定义或者solr里面的schemal文件,它里面定义了每个添加的doc的处理方式。
mapping type定义了不同的逻辑上组隔离,这一点类似于数据库的各个表,例如用户表,订单表,商品表,在es里面
每个表都有自己的一个mapping type,每个mapping type包含:
元数据字段:
(1),身份元数据
_index : 此doc例如于那个index名 , 自动被索引,可被查询,聚合,排序使用,或者脚本里访问
_type: 此doc的mapping type名, 自动被索引,可被查询,聚合,排序使用,或者脚本里访问
_id : doc的id,建索引时候传入 ,不被索引, 可通过_uid被查询,脚本里使用,不能参与聚合或排序
_uid: 由_type和_id字段组成,自动被索引 ,可被查询,聚合,排序使用,或者脚本里访问
(2),文档元数据
_source : 一个doc的原生的json数据,不被索引,用于获取提取字段值 ,启动此字段,索引体积会变大,如果既想使用此字段
又想兼顾索引体积,可以开启索引压缩
_size: 整个_source字段的字节数大小
(3),索引时元数据
_all: 自动组合所有的字段值,以空格分割,可以指定分器词索引,但是整个值不被存储,所以此字段仅仅能被搜索,不能被获取值
_field_names:索引了每个字段的名字可以包含null值,可以通过exists查询或missing查询方法来校验特定的字段
_timestamp:可以手工指定时间戳值,也可以自动生成使用now()函数,除此之外还可以设置日期的格式化,忽略确实等功能
_ttl:对于一些会话数据或者验证码失效时间,一般来说是有生命周期的,在es中可以很方便的通过这个ttl来设置存活时间,比如1小时,或者10分钟,在超时过后,这个doc会被自动删除,这种方式并不适合按周或按天删除历史数据,如果是这种需求,可考虑使用索引级别的管理方式。
(4),路由元数据
_parent:在同一个索引中,可以通过_parent字段来给两个不同mapping type的数据建立父子关系,在查询时可以通过has_child,
has_parent等查询,来聚合join数据,需要注意的是,父子type必须不能是一样的,否则会识别失败!
_routing: 一个doc可以被路由到指定的shard上,通过下面的规则:
shard_num = hash(_routing) % num_primary_shards
默认情况下,会使用doc的_id字段来参与路由规则,如果此doc有父子关系,则会以父亲的_id作为路由规则,以确保父子数据
必须处于同一个shard上,以提高join效率。
当然我们也可以根据规则自定义路由规则,必须按商品类目为路由规则,手机类目,玩具类目,汽车类目都会被路由到指定的shard上
如果你使用自己的路由规则,一定要确保在查询时加上路由参数,否则你搜索的结果可能会出现问题,为了提高安全,可以设置路由
参数的required=true,如果你查询时不设置路由,将会给你一个搜索无效提示,除此之外如果明确一个数据,可能会出现指定的路由上
我们还可以在查询时加上路由参数,以确保减少搜索时的扫描范围,从而可以大幅度的提高的查询性能。最后一点需要注意的是如果指定了使用自己的路由规则,如果两个文档_id参数一样,但是路由规则值不一样,有可能造成这两条数据被分发到不同的shard,所以在使用自己的路由规则时
注意_id参数的唯一性。
(5)其他的元数据字段
_meta:每个mapping type可以有不同的元数据类型,我们可以存储自己定义认为的元数据中,此字段支持查询和更新
官网文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-fields.html#_document_source_meta_fields
http://mp.weixin.qq.com/s?__biz=MzAxMzE4MDI0NQ==&mid=400615921&idx=1&sn=9f768e706e56bcb687ac19e21d617bc3&scene=23&srcid=11267vpr5ectOh6eG9r68jqr#rd
相关推荐
ElasticSearch官方测试数据
arcgis elasticSearch es 矢量数据导入插件 数据建模 mapping indexsetting 字段映射 索引建模支持geoshape、shape,text索引支持keyword/ngram/edgeNgram/ikSmart,快速导入,兼容multipolygon,带洞,多面,使用时...
ElasticSearch数据导出 elasticsearch单文档数据导出 支持自定义查询 导出数据Json文件
一款基于Java注解的elasticsearch mapping生成工具,支持ES 5.2.0所有可选参数
ES 官方示例数据
因为你不知道将Hive的数据导入到了ElasticSearch后,数据量是否准确,所以需要钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量,注意,这个项目打包后,最好另起一个进程调用,并且开始时间为文章1或者2最大...
好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个开源的高拓展的分布式全文搜索引擎它可以近乎实时的存储、检索数据;本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用...
ElasticSearch映射生成器该工具允许在创建索引时为索引生成映射或设置。 使用注释描述定义的映射字段安装二进制文件部署在Maven Central上,您可以将工件导入到您的项目中: < dependency> < groupId>...
arcgis elasticSearch es 矢量数据导入插件 数据建模 mapping indexsetting 字段映射 索引建模支持geoshape、shape,text索引支持keyword/ngram/edgeNgram/ikSmart,快速导入,兼容multipolygon,带洞,多面,使用时...
elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载
Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和...
ES支持的数据类型数据类型keyword : 如果数组中的值是字符串,最好使用keyword, 它不会对字符串进行分词date 支持的格式有:可以通过forma
Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。
elastic数据导出工具,可以直接将es中的数据导入存储到Mysql,也可以指定存储到本地文件夹中,可以选择以json格式或者sql语句的形式
springboot整合elasticsearch7,进行数据同步。elasticsearch相关度查询、排序。高亮显示;自动补全等功能。代码仅供参考,代码中有具体的注释,可以根据代码及注释内容,对自己项目架构及业务进行修改、整合。
消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 <groupId>org.elasticsearch <artifactId>elastic...
ElasticSearch测试数据
一、概述 一般来说我们开发Elasticsearch会选择...2、elasticsearch-head (方便查看ES中的索引及数据) 3、Kibana(方便开发通过rest api 调试ES,有代码提示) 4、中文分词elasticsearch-analysis-ik (ik) 1、下载ela
分享一套完整版视频课程——分布式搜索引擎Elasticsearch开发实战基础篇 (ElasticSearch、ELK、搜索引擎、Lucene),本教程旨在带领大家进入搜索引擎领域...Elasticsearch索引和Mapping Elasticsearch搜索深入 Elastic
可用于Elasticsearch学习使用的测试数据。数据格式为xml,需要通过logstash导入Elasticsearch。