es-Mapping

news/2024/7/7 20:56:24

文章目录

  • es-Mapping
    • 概念
    • 查看mapping
    • ES数据类型
    • 两种映射类型
    • 映射参数

es-Mapping

  • 概念:映射是定义文档及其包含的字段的存储和索引方式的过程
  • 两种映射方式
    • dynamic mapping(动态映射或自动映射)
    • expllcit mapping (静态映射或手动映射或显示映射)
  • Mapping数据类型
  • Mapping参数

概念

mapping就是ES数据字段field的type元数据,ES在创建索引的时候,dynamic mapping会自动为不同的数据指定相应mapping,mapping中包含了字段的类型、搜索方式(exact value或者full text)、分词器等。

查看mapping

GET /index/_mappings

ES数据类型

  1. 核心类型
    • 1)数字类型:
      • a.long, integer, short, byte, double, float, half_float, scaled_float
      • b.在满足需求的情况下,尽可能选择范围小的数据类型。
    • 2)字符串:string:
      • a.keyword:适用于索引结构化的字段,可以用于过滤、排序、聚合。keyword类型的字段只能通过精确值(exact value)搜索到。Id应该用keyword
      • text当一个字段是要被全文搜索的,比如Email内容、产品描述,这些字段应该使用text类型。设置text类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。(解释一下为啥不会为text创建正排索引:字段数据会占用大量堆空间,尤其是在加载高基数text字段时。字段数据一旦加载到堆中,就在该段的生命周期内保持在那里。同样,加载字段数据是一个昂贵的过程,可能导致用户遇到延迟问题。这就是默认情况下禁用字段数据的原因)
      • b.有时,在同一字段中同时具有全文本(text)和关键字(keyword)版本会很有用:一个用于全文本搜索,另一个用于聚合和排序。
    • 3)date(时间类型):包括date和date nanos
    • 4)alias:为现有字段定义别名
    • 5)binary(二进制):binary
    • 6)range(区间类型):integer_range、float_range、long_range、double_range、date_range
  2. 对象关系类型
    • 1)object:用于单个JSON对象
    • 2)nested:用于JSON对象数组
    • 3)flattened:允许将整个JSON对象引为单个字段
  3. 结构化类型
    • geo-point:纬度/经度积分
    • geo-shape:用于多边形等复杂形状
    • point:笛卡尔坐标点
    • shape:笛卡尔任意几何突图形
  4. 特殊类型
    • 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当所有文档都具有相同值时的情况的 专业化。
  5. Array(数组):在Elasticsearch中,数组不需要专用的字段数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的数据类型。
  6. ES 7新增:
    1)Date_nanos:date plus 纳秒
    2)Features:

两种映射类型

  • 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"
      }
    }
  }
}

映射参数

  • index:是否对创建对当前字段创建倒排索引,默认true,如果不创建索引,该字段不会通过索引被搜索到,但是仍然会在source元数据中展示
  • analyzer:指定分析器(character filter、tokenizer、Token filters)。
  • ③boost:对当前字段相关度的评分权重,默认1
  • ④coerce:是否允许强制类型转换 true “1”=> 1 false “1”=< 1
  • ⑤copy_to:
	"field": {
	     "type": "text",
	     "copy_to": "other_field_name" 
	}
  • 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 
		  }}
		
		PUT my_index{
		  "mappings": {
		    "properties": {
		      "session_data": {
		        "type": "object",
		        "enabled": false
		      }
		    }
		  }}
  • fielddata:查询时内存数据结构,在首次用当前字段聚合、排序或者在脚本中使用时,需要字段为fielddata数据结构,并且创建倒排索引保存到堆中
  • fields:给field创建多字段,用于不同目的(全文检索或者聚合分析排序)
  • ⑫format:格式化
	"date": {
	      "type":   "date",
	      "format": "yyyy-MM-dd"
	 }
  • ⑬ignore_above:超过长度将被忽略
  • ⑭ignore_malformed:忽略类型错误
	PUT my_index{
	  "mappings": {
	    "properties": {
	      "number_one": {
	        "type": "integer",
	        "ignore_malformed": true
	      },
	      "number_two": {
	        "type": "integer"
	      }
	    }
	  }}
	PUT my_index/_doc/1{
	  "text":       "Some text value",
	  "number_one": "foo" }   //虽然有异常 但是不抛出
	PUT my_index/_doc/2{
	  "text":       "Some text value",
	  "number_two": "foo" }   //数据格式不对	
  • ⑮index_options:控制将哪些信息添加到反向索引中以进行搜索和突出显示。仅用于text字段
  • ⑯Index_phrases:提升exact_value查询速度,但是要消耗更多磁盘空间
  • ⑰Index_prefixes:前缀搜索
    • 1)min_chars:前缀最小长度,>0,默认2(包含)
    • 2)max_chars:前缀最大长度,<20,默认5(包含)
	"index_prefixes": {
	          "min_chars" : 1,
	          "max_chars" : 10
	        }	
  • ⑱meta:附加元数据
  • ⑲normalizer:
  • norms:是否禁用评分(在filter和聚合字段上应该禁用)。
  • 21null_value:为null值设置默认值
    "null_value": "NULL"
    
  • 22position_increment_gap:
  • 23proterties:除了mapping还可用于object的属性设置
  • 24search_analyzer:设置单独的查询时分析器:
	PUT my_index{
	  "settings": {
	    "analysis": {
	      "filter": {
	        "autocomplete_filter": {
	          "type": "edge_ngram",
	          "min_gram": 1,
	          "max_gram": 20
	        }
	      },
	      "analyzer": {
	        "autocomplete": { 
	          "type": "custom",
	          "tokenizer": "standard",
	          "filter": [
	            "lowercase",
	            "autocomplete_filter"
	          ]
	        }
	      }
	    }
	  },
	  "mappings": {
	    "properties": {
	      "text": {
	        "type": "text",
	        "analyzer": "autocomplete", 
	        "search_analyzer": "standard" 
	      }
	    }
	  }}
	PUT my_index/_doc/1{
	  "text": "Quick Brown Fox" }
	GET my_index/_search{
	  "query": {
	    "match": {
	      "text": {
	        "query": "Quick Br", 
	        "operator": "and"
	      }
	    }
	  }}
  • 25similarity:为字段设置相关度算法,支持BM25、claassic(TF-IDF)、boolean
  • 26store:设置字段是否仅查询
  • 27term_vector:运维参数

http://lihuaxi.xjx100.cn/news/836900.html

相关文章

java商城源码_java 多商户商城系统源码分享

三勾商城多商户是开发友好的微信小程序商城&#xff0c;框架支持SAAS&#xff0c;支持发布 iOS Android 公众号 H5 各种小程序&#xff08;微信/支付宝/百度/头条/QQ/钉钉/淘宝&#xff09;等多个平台&#xff0c;不可多得的二开神器&#xff0c; 为大中小企业提供极致的移…

超详细的JAVA高级进阶基础知识01

目录 1. 面向对象高级01 1.1 static 关键字 1.1.1 static 关键字的介绍 1.1.2 static 修饰成员的特点 1.1.3 static 关键字总结 1.2 继承 1.2.1 继承介绍 1.2.2 继承 - 学习路径 1.2.3 继承中的成员访问特点 - 成员变量 1.2.4 继承中的成员访问特点 - 成员方法 1.…

互联网摸鱼日报(2023-02-08)

互联网摸鱼日报&#xff08;2023-02-08&#xff09; InfoQ 热门话题 “赋能制造 因你而耀”第六届全国工业互联网数据创新应用大赛算法赛题上新&#xff01; 全球化安全生产 & 质量保障体系建设探索 B2B跨境支付平台XTransfer的质量保障体系建设之路&#xff1a;测试的左…

Cannot read property ‘getDisplayMedia‘ of undefined

文章目录一、问题出现原因二、解决方法方法一&#xff1a;方法二&#xff1a;三、其他注意事项今天在把项目部署到服务器上的时候&#xff0c;突然发现直播功能失效了&#xff0c;在本地跑是没有问题的&#xff0c;找了半天终于知道是什么原因了&#xff0c;即 Cannot read pro…

Vue3电商项目实战-首页模块5【18-首页主体-轮播图-逻辑封装、19-首页主体-面板封装、20-首页主体-新鲜好物、21-首页主体-人气推荐】

文章目录18-首页主体-轮播图-逻辑封装19-首页主体-面板封装20-首页主体-新鲜好物21-首页主体-人气推荐18-首页主体-轮播图-逻辑封装 目的&#xff1a; 封装小兔鲜轮播图组件&#xff0c;第三步&#xff1a;逻辑功能实现。 大致步骤&#xff1a; 自动播放&#xff0c;暴露自动轮…

SAP IDOC DELVRY03 增强相关

一.如何增强自定义结构 1.WE31 创建你想要增加的字段 最后别忘了set release 2.WE30-->创建自己的extension 右键合适的位置去append 最后别忘了 set release 3.WE82-->新建一条自己的记录&#xff08;注意是新建不是修改&#xff09; 4.WE20-->分配自己的增强 二.交…

社交赛道的后起追赶者Damus有什么不一样?不发代币的Nostr让Web2和Web3都沉默了

这是被串公钥刷屏一周&#xff0c;无论是在朋友圈还是推特 Facebook&#xff0c;关键性事件就是 Twitter 前首席执行官 Jack Dorsey 发推称&#xff0c;基于去中心化社交协议 Nostr 的社交产品 Damus 和 Amethyst 已分别在苹果 App Store 和谷歌 Google Play Store 上线&#x…

2月8日,30秒知全网,精选7个热点

///印度Petronet公司将与卡塔尔续签长期协议&#xff0c;寻求更多液化天然气进口 今年将与卡塔尔续签长期协议&#xff0c;寻求每年100万吨的液化天然气&#xff08;LNG&#xff09;进口 ///盖茨再谈ChatGPT&#xff1a;AI能提高效率&#xff0c;但要考虑边界在哪 盖茨认为&a…