Elasticsearch的mapping映射

前言

参考的es的文档 当前版本7.15

Mapping | Elasticsearch Guide [7.15] | Elastic

        可能刚接触es的小白和我一样(我也是小白),映射是个啥玩意,如果直接学习的java朋友感觉可能听起来不太没有那么的通俗易懂,如果有c的基础的话,c里面就有一个映射概念,java基础中映射的概念很少,框架之后会接触到,但是这里可以通俗的理解为一个对象(对比mysql也是可以的都一样,学东西我觉得类比是最快的,当然这样类比漏洞很多,只是为了快速上手)

 一个简单的图来说明一下,左边是java中常见的一个对象,右边是es的对应索引,这样一对比,就很容易记下来es的mapping的概念了(注:es中没有String这个类型)

官网说明为:

        映射是定义文档及其包含的字段如何存储和索引的过程

1.mapping

        如果想要看自己对应的文档的mapping,通过 get  /文档/_mapping ,这也是为什么之前基本查询语法中,某些语法不容易写出来例子,我这个zzl的只有price 是一个long类型的,并且不指定mapping类型,es能够自动帮你创建,也算是比较贴心,但是也有点坑

"zzl" : {
    "mappings" : {
      "properties" : {
        "current" : {
          "type" : "keyword"
        },
        "desc" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "price" : {
          "type" : "long"
        },
        "tage" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "tags" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "zzl" : {
          "type" : "long"
        }
      }
    }
  }

       废话说的真多,开始上东西

数据类型

        核心类型

                long
                integer
                short
                byte
                double
                float
                half_float
                scaled_float

日期

                date(exact value)
                date_nanos(该数据类型是该数据类型的补充date。但是,两者之间有重要区别。现有     date数据类型以毫秒为单位存储日期。date_nanos数据类型以纳秒为单位存储时间,存储范围为1970至2262年)

字符串        

        有时,在同一字段中同时具有全文本(text)和关键字(keyword)版本会很有用:一个用于全文本搜索,另一个用于聚合和排序。

        keyword(适用于索引结构化的字段,可以用于过滤、排序、聚合。keyword类型的字段只能通过精确值(exact value)搜索到。Id应该用keyword)

        text(当一个字段是要被全文搜索的,比如Email内容、产品描述,这些字段应该使用text类型。设置text类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。(解释一下为啥不会为text创建索引:字段数据会占用大量堆空间,尤其是在加载高基数text字段时。字段数据一旦加载到堆中,就在该段的生命周期内保持在那里。同样,加载字段数据是一个昂贵的过程,可能导致用户遇到延迟问题。这就是默认情况下禁用字段数据的原因

range(区间类型)

        integer_range
        float_range
        long_range
        double_range
        date_range

binary(二进制)

复杂类型

        Object:用于单个JSON对象
        Nested:用于JSON对象数组

地理位置


    Geo-shape:用于多边形等复杂形状
    Geo-shape:用于多边形等复杂形状

特有类型


    IP地址:ip 用于IPv4和IPv6地址
    Completion:提供自动完成建议
    Tocken_count:计算字符串中令牌的数量
    Murmur3:在索引时计算值的哈希并将其存储在索引中
    Annotated-text:索引包含特殊标记的文本(通常用于标识命名实体
    Percolator:接受来自query-dsl的查询
    Join:为同一索引内的文档定义父/子关系
    Rank features:记录数字功能以提高查询时的点击率。
    Dense vector:记录浮点值的密集向量。
    Sparse vector:记录浮点值的稀疏向量。
    Search-as-you-type:针对查询优化的文本字段,以实现按需输入的完成
    Alias:为现有字段定义别名。
    Flattened:允许将整个JSON对象索引为单个字段。
    Shape:shape 对于任意笛卡尔几何
    Histogram:histogram 用于百分位数聚合的预聚合数值。


Constant keyword


    keyword当所有文档都具有相同值时的情况的 专业化

ES 7新增:


    Date_nanos:date plus 纳秒
    Features:
    Vector:as

Mapping parameters 


    index :是否对创建对当前字段创建索引,默认true,如果不创建索引,该字段不会通过索引被搜索到,但是仍然会在source元数据中展示
    analyzer:指定分析器(character filter、tokenizer、Token filters)
    boost :对当前字段相关度的评分权重,默认1
    coerce:是否允许强制类型转换  true “1”=> 1   false “1”=< 1
    copy_to:复制其他字段 
    doc_values为了提升排序和聚合效率,默认true,如果确定不需要对字段进行排序或聚合,也不需要通过脚本访问字段值,则可以禁用doc值以节省磁盘空间(不支持text和annotated_text)
    dynamic

控制是否可以动态添加新字段

1)true 新检测到的字段将添加到映射中。(默认)       

2)false 新检测到的字段将被忽略。这些字段将不会被索引,因此将无法搜索,但仍会出现在_source返回的匹配项中。这些字段不会添加到映射中,必须显式添加新字段。

3)strict 如果检测到新字段,则会引发异常并拒绝文档。必须将新字段显式添加到映射中

    eager_global_ordinals

用于聚合的字段上,优化聚合性能

Frozen indices(冻结索引):有些索引使用率很高,会被保存在内存中,有些使用率特别低,宁愿在使用的时候重新创建,在使用完毕后丢弃数据,Frozen indices的数据命中频率小,不适用于高搜索负载,数据不会被保存在内存中,堆空间占用比普通索引少得多,Frozen indices是只读的,请求可能是秒级或者分钟级。eager_global_ordinals不适用于Frozen indices

    enable:是否创建倒排索引,可以对字段操作,也可以对索引操作,如果不创建索引,让然可以检索并在_source元数据中展示,谨慎使用,该状态无法修改。
    fielddata:查询时内存数据结构,在首次用当前字段聚合、排序或者在脚本中使用时,需要字段为fielddata数据结构,并且创建倒排索引保存到堆中
    fields:给field创建多字段,用于不同目的(全文检索或者聚合分析排序)
    format:date的数据 {  "type":   "date","format": "yyyy-MM-dd"}
    ignore_above:超过长度将被忽略
    ignore_malformed:
    index_options:控制将哪些信息添加到反向索引中以进行搜索和突出显示。仅用于text字段
    Index_phrases:提升exact_value查询速度,但是要消耗更多磁盘空间
    Index_prefixes:

        1)min_chars:前缀最小长度,>0,默认2(包含)

        2)max_chars:前缀最大长度,<20,默认5(包含)

    meta:附加元数据
    normalizer
    norms:是否禁用评分(在filter和聚合字段上应该禁用)
    null_value:为null值设置默认值  "null_value": "NULL"

    position_increment_gap
    proterties:除了mapping还可用于object的属性设置
    search_analyzer:设置单独的查询时分析器
    similarity:为字段设置相关度算法,支持BM25、claassic(TF-IDF)、boolean
    store
    term_vector

cat指令

/_cat/allocation       #查看单节点的shard分配整体情况

/_cat/shards          #查看各shard的详细情况

/_cat/shards/{index}   #查看指定分片的详细情况

/_cat/master          #查看master节点信息

/_cat/nodes           #查看所有节点信息

/_cat/indices         #查看集群中所有index的详细信息

/_cat/indices/{index} #查看集群中指定index的详细信息

/_cat/segments        #查看各index的segment详细信息,包括segment名, 所属shard, 内存(磁盘)占用大小, 是否刷盘

/_cat/segments/{index}#查看指定index的segment详细信息

/_cat/count           #查看当前集群的doc数量

/_cat/count/{index}   #查看指定索引的doc数量

/_cat/recovery        #查看集群内每个shard的recovery过程.调整replica。

/_cat/recovery/{index}#查看指定索引shard的recovery过程

/_cat/health          #查看集群当前状态:红、黄、绿

/_cat/pending_tasks   #查看当前集群的pending task

/_cat/aliases         #查看集群中所有alias信息,路由配置等

/_cat/aliases/{alias} #查看指定索引的alias信息

/_cat/thread_pool     #查看集群各节点内部不同类型的threadpool的统计信息,

/_cat/plugins         #查看集群各个节点上的plugin信息

/_cat/fielddata       #查看当前集群各个节点的fielddata内存使用情况

/_cat/fielddata/{fields}     #查看指定field的内存使用情况,里面传field属性对应的值

/_cat/nodeattrs              #查看单节点的自定义属性

/_cat/repositories           #输出集群中注册快照存储库

/_cat/templates              #输出当前正在存在的模板信息

        
 这段参数太多了,不一一举例了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L.S.V.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值