当前位置:   article > 正文

Mapping 索引映射_映射索引

映射索引

Mapping 索引映射

核心数据类型
字符串类型: string text and keyword
数字类型: Numeric long, integer, short, byte, double, float, half_float, scaled_float
日期类型: Date date
纳秒日期类型:Date nanoseconds date_nanos
布尔类型: Boolean boolean
二进制类型: Binary binary
范围类型: Range integer_range, float_range, long_range, double_range, date_range

复杂数据类型
对象类型: Object 单个JSON对象的对象
嵌套类型: Nested 嵌套用于JSON对象的数组

Geo地理数据类型
Geo-point 用于经纬度的点 (lat/lon points)
Geo-shape 用于多边形等复杂形状

专业数据类型
IP ip for IPv4 and IPv6 addresses
Shape shape for arbitrary cartesian geometries.
Histogram histogram for pre-aggregated numerical values for percentiles aggregations.

数组
在Elasticsearch中,数组不需要专用的字段数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的数据类型。请参阅数组。
多字段
为不同的目的以不同的方式为同一字段建立索引通常很有用。这是多领域的目的。例如,一个string 字段可以映射为text用于全文搜索的字段,也可以映射为keyword用于排序或聚合的字段:

在这里插入图片描述

为不同的目的以不同的方式为同一字段建立索引通常很有用。例如,一个string字段可以映射为text用于全文搜索的字段,也可以映射为keyword用于排序或聚合的字段。或者,您可以使用standard分析仪, english分析仪和 french分析仪索引文本字段。
这是多领域的目的。大多数数据类型通过fields参数支持多字段。

在这里插入图片描述
在这里插入图片描述

多值字段和倒排索引
所有字段类型均支持开箱即用的多值字段,这是Lucene起源的结果。Lucene被设计为全文搜索引擎。为了能够在大文本块中搜索单个单词,Lucene将文本标记为单个术语,并将每个术语分别添加到倒排索引中。
这意味着默认情况下,即使是简单的文本字段也必须能够支持多个值。当添加其他数据类型(例如数字和日期)时,它们使用与字符串相同的数据结构,因此默认获得了多值。

元字段
每个文档都有与之关联的元数据,例如_index,映射 _type和_id元字段。创建映射类型时,可以自定义其中一些元字段的行为。
Identity meta-fields
_index 文档所属的索引。
_type 文档的映射类型。6.0中已删除,将在8.0中彻底删除
_id 文件编号。
Document source meta-fields
_source 表示文档正文的原始JSON。
_size 插件_source提供 的字段大小(以字节为单位) 。
Indexing meta-fields
_field_names All fields in the document which contain non-null values.
_ignored All fields in the document that have been ignored at index time because of ignore_malformed.
Routing meta-field
_routing A custom routing value which routes a document to a particular shard.
Other meta-field
_meta Application specific metadata.

Mapping参数

analyzer
text 字段通过analyzer设置指定分析器,不指定默认标准单字分词器
在索引时和搜索时都应用于该字段 的分析器text(除非被覆盖search_analyzer)。默认为默认索引分析器,或者为standardanalytics。

index
该index选项控制是否对字段值建立索引。它接受true 或false,默认为true。未索引的字段不可查询。
默认所有字段都要创建索引(倒排索引)

doc_values
默认情况下,所有支持doc_values的类型都对值进行了列存储,除text字段之外;
文档的值是在文档索引时以列的形式构建的磁盘上数据结构。
如果您确定不需要对字段进行排序或汇总,也不需要通过脚本访问字段值,则可以禁用doc值以节省磁盘空间:
Elasticsearch 中的 Doc Values 常被应用到以下场景:
对一个字段进行排序
对一个字段进行聚合
某些过滤,比如地理位置过滤
某些与字段相关的脚本计算
因为文档值被序列化到磁盘,我们可以依靠操作系统的帮助来快速访问。当 working set 远小于节点的可用内存,系统会自动将所有的文档值保存在内存中,使得其读写十分高速; 当其远大于可用内存,操作系统会自动把 Doc Values 加载到系统的页缓存中,从而避免了 jvm 堆内存溢出异常。

enabled
Elasticsearch尝试为您提供的所有字段建立索引,但有时您只想存储该字段而不为其建立索引。例如,假设您将Elasticsearch用作Web会话存储。您可能要为会话ID和上次更新时间建立索引,但是不需要查询或运行会话数据本身的聚合。
该enabled设置仅可应用于顶级映射定义和object字段,从而使Elasticsearch完全跳过对字段内容的解析。仍然可以从_source字段中检索JSON ,但是无法搜索或以其他任何方式存储它;

null_value
一个null值不能被索引或搜索。当字段设置null为时(或空数组或null值数组),将其视为该字段没有值。
该null_value参数允许您null用指定的值替换显式值,以便可以对其进行索引和搜索。

fields
为不同的目的以不同的方式为同一字段建立索引通常很有用。这是多领域的目的。例如,一个string 字段可以映射为text用于全文搜索的字段,也可以映射为keyword用于排序或聚合的字段;

properties
类型映射,object字段和nested字段 包含称为的子字段properties。这些属性可以是任何 数据类型,包括object和nested。可以添加属性:
通过创建索引时明确定义它们。
通过在使用PUT映射 API 添加或更新映射类型时定义它们来明确定义它们。
仅通过索引包含新字段的文档即可动态地实现。

store
默认情况下,对字段值建立索引以使其可搜索,但不存储它们。 这意味着可以查询该字段,但是无法检索原始字段值。
通常这无关紧要。 该字段值已经是_source字段的一部分,默认情况下已存储。 如果您只想检索单个字段或几个字段的值,而不是整个_source的值,则可以使用源过滤来实现。
在某些情况下,存储字段可能很有意义。 例如,如果您有一个带有标题,日期和很大的内容字段的文档,则可能只想检索标题和日期,而不必从较大的_source字段中提取这些字段;

动态模板
动态模板使您可以基于以下内容定义可应用于动态添加的字段的自定义映射:
Elasticsearch检测到 的数据类型,带有match_mapping_type。
字段名称,使用match和unmatch或match_pattern。
完整的虚线路径领域,拥有path_match和path_unmatch。
原始字段名称{name}和检测到的数据类型 {dynamic_type} 模板变量可以在映射规范中用作占位符。
仅当字段包含具体值时才添加动态字段映射,而不是null或包含空数组。这意味着,如果在null_value中使用了该选项dynamic_template,则仅在索引了具有该字段具体值的第一个文档之后才应用该 选项。

索引模板
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html
创建索引模板也可以实现此功能,只不过索引模块是针对所有index有效,动态模板只针对当前索引有效。

参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html#field-datatypes

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/853920
推荐阅读
相关标签
  

闽ICP备14008679号