• mapping 详解1(mapping type)


    映射(mapping)

    映射是定义一个文档以及其所包含的字段如何被存储和索引的方法。

    例如,用映射来定义以下内容:

    • 哪些 string 类型的 field 应当被当成当成 full-text 字段
    • 哪些字段应该是数值类型、日期类型或者是地理位置信息
    • 日期类型字段的格式是怎么样的
    • 是否文档的所有字段都需要被索引到 _all 字段
    • 动态增加的 field 可以由用户自定义的模板来控制其行为

    映射类型(mapping types)

    每个索引都有一个或多个映射类型(mapping type)来对索引内的文档进行逻辑分组(mapping type 就是平常所说的 type)。

    每一个映射类型都包含以下内容:

    1. 元数据字段

    元数据字段用来自定义如何处理关联文档的元数据。元数据字段包括: _index, _type, _id, _source.

    2. 字段列表或属性

    每个映射类型都包含一个字段列表或者是和该类型相关的一些属性。

    字段数据类型(field datatypes)

    每一个字段,都属于一种数据类型。

    1. 基本数据类型

    string, long, boolean, ip

    2. JSON 分层数据类型

    object, nested

    3. 特殊类型

    geo_point, geo_shape, completion

    动态映射(dynamic mapping)

    字段及其映射类型不必在使用前事先定义好,这得益于动态映射的应用。

    动态映射能够根据文档索引过程来自动生成映射类型和字段名。

    动态映射规则可以用来定义新类型和新字段的映射。

    显式映射(explicit mappings)

    如果你比 ES 通过猜测来确定映射更加了解你的数据,那么定义一个动态映射将会很有用。不过有时候你可能需要指定自己的显式映射。

    显式映射可以在创建索引时候定义,或者用 mapping API 来为已有的索引添加映射类型或字段。

    映射更新(updating existing mappings)

    映射支持更新,如果需要,必须重建索引并设置正确的 mapping ,而不是试图去更新已有的 mapping。

    字段之间共享映射类型(fileds are shared across mapping types)

    映射类型用来逻辑分组字段,但是每个映射类型之间的字段并非独立存在的。

    1. 规则:

    字段在以下条件:

    1. 相同字段名
    2. 相同索引
    3. 不同映射类型

    的时候其实是映射到内部相同的字段上,所以,必须拥有相同的映射设置。

    2. 例外:

    有一些例外,参数:

    1. copy_to
    2. dynamic
    3. enabled
    4. ignore_above
    5. include_in_all
    6. properties

    可以对满足前述“规则”的字段进行各自不同的设置。

  • 相关阅读:
    "Coding Interview Guide" -- 删除无序单链表中值重复出现的节点
    "Coding Interview Guide" -- 设计一个有getMin功能的栈
    "Coding Interview Guide" -- 仅用递归函数和栈操作逆序一个栈
    "Coding Interview Guide" -- 猫狗队列
    "Coding Interview Guide" -- 阶乘
    "Coding Interview Guide" -- 不用额外变量交换两个整数的值
    IDEA问题
    JAVA
    Log4j
    MAVEN教程
  • 原文地址:https://www.cnblogs.com/licongyu/p/5468146.html
Copyright © 2020-2023  润新知