Meta-Fields

每个文档都有与之关联的元字段,例如_index、_type和 _id 元字段。 创建映射类型时,可以自定义其中一些元字段的行为。

Identity meta-fields(文档标示元字段)

_index

文档所属的索引。

多索引查询时,有时候只需要在特地索引名上进行查询,_index字段提供了便利,也就是说可以对索引名进行term查询、terms查询、聚合分析、使用脚本和排序。

_index是一个虚拟字段,不会真的加到Lucene索引中,对_index进行term、terms查询(也包括match、query_string、simple_query_string),但是不支持prefix、wildcard、regexp和fuzzy查询。

_uid

_type 和_id 的组合

在elasticsearch6及之后弃用。现在,_type类型已被删除,文档由_id唯一标识,_uid字段仅作为查看_id字段以保持向后兼容。

_type

文档的匹配类型。

在elasticsearch6及之后弃用。
索引中的每一份文档都和一个 _type和_id唯一关联。 _type 字段本身的设计目标是为了索引更快查询。可被查询,聚合,排序使用,或者脚本里使用。

_id

文档的id.

每一个文档都有一个独一无二的 _id 标示它, 它被索引存储一遍我们在调用GET API 或者查询ids时能够更快的点位文档。

在elasticsearch6之前因为支持多类型的存在,所以我们在一个索引中唯一标示文档需要同时用到 _type 和 _id,或者用_uid来作为唯一主键,elasticsearch6 及之后_id 就是索引的唯一主键。

Document source meta-fields(原文档元字段)

_source

文档的原生json字符串文档内容。

_source字段包含在索引时间传递的原始JSON文档正文。 _source字段本身没有编入索引(因此不可搜索),但它被存储,以便在执行获取请求(如get或search)时可以返回它。
默认_source字段是开启的,也就是说,默认情况下存储文档的原始值。

禁用_source

如果某个字段内容非常多(比如一篇小说),或者查询业务只需要对该字段进行搜索,返回文档id,然后通过其他途径查看文档原文,则不需要保留_source元字段。可以通过禁用_source元字段,在ElasticSearch 中只存储倒排索引,不保留字段原始值。

PUT tweets
{"mappings": {"_doc": {"_source": {"enabled": false}}}
}

包含或者去除 _source 元字段里面的字段

在文档存储之前,我们可以先定义在索引_source存储哪些信息不存储哪些信息
定义映射

PUT logs
{"mappings": {"_doc": {"_source": {"includes": ["*.count","meta.*"],"excludes": ["meta.description","meta.other.*"]}}}
}

插入内容

PUT logs/_doc/1
{"requests": {"count": 10,"foo": "bar" },"meta": {"name": "Some metric","description": "Some metric description", "other": {"foo": "one", "baz": "two" }}
}
GET logs/_search
{"query": {"match": {"meta.other.foo": "one" }}
}

查询结果如下:

{"took": 58,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.2876821,"hits": [{"_index": "logs","_type": "_doc","_id": "1","_score": 0.2876821,"_source": {"meta": {"other": {},"name": "Some metric"},"requests": {"count": 10}}}]}
}

_size

mapper-size 插件提供的计算整个_source字段的字节数大小 。

Indexing meta-fields(索引元字段)

_all

_all字段是把其它字段拼接在一起的超级字段,所有的字段用空格分开,_all字段会被解析和索引,但是不存储。当你只想返回包含某个关键字的文档但是不明确地搜某个字段的时候就需要使用_all字段。默认是关闭的。

在elasticsearch6及之后弃用。

PUT /my_index
{"mapping": {"user": {"_all": {"enabled": true   }}}
}PUT /my_index/user/1
{"first_name":    "John","last_name":     "Smith","date_of_birth": "1970-10-24"
}GET /my_index/_search
{"query": {"match": {"_all": "john smith 1970"}}
}

上面的例子中_all 将包含这些索引词:[ "john", "smith", "1970", "10", "24" ],索引次的组合顺序依赖于分词器,_all已弃用。

_field_names

_field_names字段包含索引文档中字段的取值除null以外的任何值每个字段的名称。 一般使用此字段来查找对于特定字段具有或不具有任何非空值的文档。

目前,一般来讲_field_names字段只包含具有doc_values并且默认关闭属性的字段名称。

禁用 _field_names

PUT tweets
{"mappings": {"_doc": {"_field_names": {"enabled": false}}}
}

_ignored

elasticsearch 6.4之后添加元字段

_ignored 元字段索引和存储文档中由于ignore_malformed属性被ignored 的每个字段的名称。

Routing meta-field(路由元字段)

_routing
索引中的文档存储在特定的分片使用下面的公式决定:
shard_num = hash(_routing) % num_primary_shards
默认是用的 文档_id元字段的值来路由。

自定义路由模式可以通过指定每个文档的自定义路由值来实现。例如:

PUT my_index/_doc/1?routing=user1&refresh=true
{"title": "This is a document"
}

GET my_index/_doc/1?routing=user1
查询结果

{"_index": "my_index","_type": "_doc","_id": "1","_version": 1,"_routing": "user1","found": true,"_source": {"title": "This is a document"}
}

请求体查询方式如下:

GET my_index/_search
{"query": {"terms": {"_routing": [ "user1" ] }}
}

其他meta-field (自定义元字段)

elasticsearch 也支持自定义元数据。

Elasticsearch之Mapping Meta-Fields相关推荐

  1. Elasticsearch之Mapping设置详解

    Elasticsearch之Mapping详解 什么是Mapping? 字段的数据类型 Dynamic Mapping ES类型自动识别机制 更新mapping 定义Mapping 1.控制字段是否被 ...

  2. elasticsearch 的mapping定义

    elasticsearch 的mapping 例子一: 订单号 如:ATTS000928732 类型不分词. index: not_analyzed 订单号是全部数据 如: 63745345637 这 ...

  3. elasticsearch mapping之fields

    ES允许同一个字段有两个不同的类型,例如一个字段可以拥有keyword类型来进行聚合与排序,也可以拥有text来做全文检索. 举例如下: PUT my_index {"mappings&qu ...

  4. Elasticsearch的mapping映射

    前言 参考的es的文档 当前版本7.15 Mapping | Elasticsearch Guide [7.15] | Elastic 可能刚接触es的小白和我一样(我也是小白),映射是个啥玩意,如果 ...

  5. Elasticsearch之mapping映射入门

    10.1. 什么是mapping映射 概念:自动或手动为index中的_doc建立的一种数据结构和相关配置,简称为mapping映射. 插入几条数据,让es自动为我们建立一个索引 PUT /websi ...

  6. ElasticSearch映射Mapping

    1.1 什么是映射 (1) 映射(mapping): 定义index的元数据, 指定要索引并存储的文档的字段类型. 也就是说映射决定了Elasticsearch在建立倒排索引.进行检索时对文档采取的相 ...

  7. 【Elasticsearch】Elasticsearch 理解mapping中的store属性

    1.概述 转载:https://www.cnblogs.com/sanduzxcvbnm/p/12157453.html 默认情况下,对字段值进行索引以使其可搜索,但不存储它们 (store). 这意 ...

  8. Elasticsearch 6 Mapping设置

    Mapping 类似于数据库中的表结构定义,主要作用如下: 定义Index下字段名(Field Name) 定义字段的类型,比如数值型,字符串型.布尔型等 定义倒排索引的相关配置,比如是否索引.记录p ...

  9. Elasticsearch:使用 runtime fields 探索你的数据

    考虑要提取字段的大量日志数据. 为数据建立索引非常耗时,并且会占用大量磁盘空间,而你只想探索数据结构而无需预先提交 schema. 你知道你的日志数据包含你要提取的特定字段. 在这种情况下,我们要关注 ...

最新文章

  1. vim替换某行到某行的命令方法
  2. docker容器内访问外部mysql_详解Docker容器内应如何访问本机(宿主机)
  3. (luogu4180) [Beijing2010组队]次小生成树Tree
  4. win10一直正在检查更新_教你win10升级更新失败怎么办
  5. JAVA入门[6]-Mybatis简单示例
  6. centos linux 内核升级,Centos系统的升级及Linux 内核升级
  7. 精英计算机主板,精英电脑发布顶级P965芯片组主板
  8. CHROME 拖动安装插件报错CRX_HEADER_INVALID的解决办法
  9. java 获取图片路径_Java获取文件路径的几种方式
  10. 蓝桥杯C语言程序设计真题
  11. xamp配置虚拟域名_如何下载,安装和配置XAMP以创建网页?
  12. matlab中饼图绘制程序,MATLAB中绘制二维饼图的函数是(? ? ) (1.5分)
  13. 如何往linux虚拟机传文件,Windows中虚拟机Linux传输文件的两个简单的方法
  14. 计算机研究生论文怎怎么写,计算机硕士研究生论文大纲格式 计算机硕士研究生论文大纲怎样写...
  15. CDN防盗链与有效使用CDN缓存
  16. 青云云服务器怎么上传文件,青云QingCloud发布文件存储,进一步完善软件定义存储解决方案...
  17. javaweb JSP JAVA 电影院在线订票系统(电影购票系统 电影售票 电影票预订系统)
  18. 景区WiFi覆盖方案
  19. 【Python百炼成魔】魂圣初入Python之Python最佳入门实践
  20. 蒟蒻のpython(做个飞船大战小游戏)

热门文章

  1. EI:生物膜反应器抗性组对替加环素浓度升高的动态响应
  2. Microbiome: 16S rRNA基因拷贝数应该被校正吗?
  3. R语言ggplot2可视化:指定标题的坐标轴位置(X轴坐标和Y轴坐标),将图像的标题(title)放置在图像内部的指定位置(customize title positon in plot)
  4. R语言split函数、unsplit函数按组拆分数据、合并数据实战
  5. seaborn使用FacetGrid函数可视化山脊图(Ridgeline Plot with Seaborn)
  6. R语言使用ggplot2同时可视化dataframe的多个数据列实战:多个数据列可视化在同一个图中、多个数据列可视化在多个图中(纵向多个子图)
  7. python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同?
  8. php识别下载图片类型,php识别jpg图片exif信息中Photoshop格式 类型
  9. R语言包_reshape2
  10. Pacbio 数据相关的几个重要概念