首页 > 其他分享 >elasticsearch mapping

elasticsearch mapping

时间:2024-04-07 22:24:53浏览次数:24  
标签:date text mapping 索引 字段 elasticsearch 类型

1 概念:

​ ES中的mapping有点类似与RDB中“表结构”的概念,在MySQL中,表结构里包含了字段名称,字段的类型还有索引信息等。在Mapping里也包含了一些属性,比如字段名称、类型、字段使用的分词器、是否评分、是否创建索引等属性,并且在ES中一个字段可以有对个类型。分词器、评分等概念在后面的课程讲解。

2 查看mapping

​ GET /index/_mappings

3 ES数据类型

常见类型

1) 数字类型

​ long integer short byte double float half_float scaled_float unsigned_long

2) Keywords

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

​ constant_keyword:始终包含相同值的关键字字段

​ wildcard:可针对类似grep的通配符查询优化日志行和类似的关键字值

​ 关键字字段通常用于排序汇总Term查询,例如term

3) Dates(时间类型):包括datedate_nanos

​ 4) alias:为现有字段定义别名。

​ 5) binary(二进制):binary

​ 6) range(区间类型):integer_range、float_range、long_range、double_range、date_range

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

② 对象关系类型:

1) object:用于单个JSON对象

2) nested:用于JSON对象数组

​ 3) flattened:允许将整个JSON对象索引为单个字段。

③ 结构化类型:

1) geo-point:纬度/经度积分

2) geo-shape:用于多边形等复杂形状

3) point:笛卡尔坐标点

2) shape:笛卡尔任意几何图形

​ ④ 特殊类型:

1) IP地址:ip 用于IPv4和IPv6地址

2) completion:提供自动完成建议

​ 3) tocken_count:计算字符串中令牌的数量

​ 4) murmur3:在索引时计算值的哈希并将其存储在索引中

​ 5) annotated-text:索引包含特殊标记的文本(通常用于标识命名实体)

​ 6) percolator:接受来自query-dsl的查询

​ 7) join:为同一索引内的文档定义父/子关系

​ 8) rank features:记录数字功能以提高查询时的点击率。

​ 9) dense vector:记录浮点值的密集向量。

​ 10) sparse vector:记录浮点值的稀疏向量。

​ 11) search-as-you-type:针对查询优化的文本字段,以实现按需输入的完成

​ 12) histogram:histogram 用于百分位数聚合的预聚合数值。

​ 13) constant keyword:keyword当所有文档都具有相同值时的情况的 专业化。

​ ⑤ array(数组):在Elasticsearch中,数组不需要专用的字段数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有 相同的数据类型。

​ ⑥新增:

​ 1) date_nanos:date plus 纳秒

​ 2) features:

4 两种映射类型

  • Dynamic field mapping:

    • 整数 => long

    • 浮点数 => float

    • true || false => boolean

    • 日期 => date

    • 数组 => 取决于数组中的第一个有效值

    • 对象 => object

    • 字符串 => 如果不是数字和日期类型,那会被映射为text和keyword两个类型

      除了上述字段类型之外,其他类型都必须显示映射,也就是必须手工指定,因为其他类型ES无法自动识别。

  • Expllcit field mapping:手动映射

    PUT /product
    {
    	"mappings": {
        "properties": {
        	"field": {
          	"mapping_parameter": "parameter_value"
    	   	}
       	}
     	}
    }
    

5 映射参数

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:用于聚合的字段上,优化聚合性能。

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

​ ⑨ enable:是否创建倒排索引,可以对字段操作,也可以对索引操作,如果不创建索引,让然可以检索并在_source元数据中展示,谨慎使用,该状态无法 修改。

    PUT my_index
    {
      "mappings": {
        "enabled": false
      }
    }

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和聚合字段上应该禁用)。

21 null_value:为null值设置默认值

​ 22 position_increment_gap:

​ 23 proterties:除了mapping还可用于object的属性设置

24 search_analyzer:设置单独的查询时分析器:

​ 25 similarity:为字段设置相关度算法,支持BM25、claassic(TF-IDF)、boolean

26 store:设置字段是否仅查询

27 term_vector:运维参数

标签:date,text,mapping,索引,字段,elasticsearch,类型
From: https://www.cnblogs.com/xu-xiaofeng/p/18120045

相关文章

  • Elasticsearch 认识分词(1)
    一.概述分词是构建倒排索引的重要一环。根据语言不同可以分为英文分词、中文分词等;根据分词实现的不同又分为标准分词器、空格分词器、停用词分词器等。在传统的分词器不能解决特定业务场景的问题时,往往需要自定义分词器。1.1认识分词对于分词操作来说,英语单词......
  • Elasticsearch-定制分词器
    一、内置分词器分词步骤1).characterfilter:在一段文本进行分词之前,先进行预处理,eg:最常见的过滤html标签(hello->hello),&->and(I&you->Iandyou)2).tokenizer:分词,eg:helloyouandme->hello,you,and,me3).tokenfilter:一个个小单词标准化转换lower......
  • 使用阿里云试用Elasticsearch学习:1.1 基础入门——入门实践
    阿里云试用一个月:https://help.aliyun.com/search/?k=elastic&scene=all&page=1官网试用十五天:https://www.elastic.co/cn/cloud/cloud-trial-overviewElasticsearch中文文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_document_oriented.html控制台......
  • 太强了!分布式Elasticsearch集群数据迁移企业案例
    太强了!分布式Elasticsearch集群数据迁移企业案例原创 林致远 Linux运维之旅 2024-04-0408:31 广东 1人听过Linux运维之旅专注分享运维实用技术,内容不限于Linux系统运维、自动化工具、监控工具、日志采集、容器技术、测试工具、python、GO等技术分享20篇原......
  • ElasticSearch 实战:ElasticSearch索引操作
    Elasticsearch实战:Elasticsearch索引操作在使用Elasticsearch进行数据管理时,索引操作是核心的一部分。本篇将详细介绍如何进行索引的创建、查看、更新(包括映射修改)、关闭与开启、删除等操作,以及如何进行索引模板设置以简化索引管理。**1.创建索引创建索引可以通过发......
  • flask 装饰器 AssertionError: View function mapping is overwriting an existing en
    1问题描述写了一个登陆认证装饰器,部分试图,只有用户登陆才能访问deflogin_wrapper(func):definner(*args,**kwargs):"""判断是否登陆若是进入视图函数否则重定向到登陆页面"""if......
  • Elasticsearch与Clickhouse的对比分析
    ClickHouse和Elasticsearch是两种不同的数据存储和分析工具,各自在不同的用例和场景下发挥着作用。数据类型:ClickHouse:主要用于结构化数据,特别擅长处理大规模的数据仓库和分析场景,支持SQL查询。Elasticsearch:适用于非结构化或半结构化数据,特别擅长全文搜索和日志分析,支......
  • Spring Data Elasticsearch String类型不指定filed 索引创建情况
    对于String类型的字段如果不指定类型会默认创建两种倒排索引       "itemSkuCodes":{         "type":"text",         "fields":{           "keyword":{             "type":"keyword",           ......
  • windows环境下elasticsearch安装教程(超详细)
     一、安装jdkElasticSearch是基于lucence开发的,也就是运行需要javajdk支持。所以要先安装JAVA环境。由于ElasticSearch5.x往后依赖于JDK1.8的,所以现在我们下载JDK1.8或者更高版本。下载JDK1.8,下载完成后安装。二、安装ElasticSearch1.ElasticSearch下载地址:https:/......
  • Elasticsearch各个版本重要特性
    Elasticsearch各个版本重要特性Elasticsearch5Elasticsearch6.0Elasticsearch7.0Elasticsearch8.0Elasticsearch5首先说明下,ES是从版本2直接跳到5的,主要是为了和ElasticStack其他组件保持版本一致ES5,在现在来说是比较老的版本了,就不多介绍了建议大家使用ES7,或者直接使用ES8E......