Elasticsearch的Mapping使用分析(es7官方文档解读)


参考ES 7版本官方文档
官方7.17文档

挑了一些我觉得重要的点总结
如有谬误,欢迎指正


mapping是什么

在ES里创建一个索引

PUT demo_index
{
   
	"mappings": {
   
		"dynamic": false
		"properties": {
   
			"demo_id": {
   
				"type": "text"
			}
		}
	}
}

上面的properties里定义了字段demo_id,它的类型是text。dynamic选择了false说明mapping不需要动态规则来匹配,这种情况下进行搜索时和普通的关系型数据库搜索非常类似。

mapping类似于数据库中的表结构定义,定义以下这些内容

  • 定义字段名称
  • 定义字段数据类型
  • 字段、倒排索引的相关配置

但是和比如mysql这样的数据相比还是有很多不同之处,搜索的字段类型可以提前定义好,也可以不定义让ES来推测,也可在搜索的时候动态加入新字段。

GET /demo_index/_mapping

查看mapping

动态mapping

如果你想使用动态mapping就将上面提到的dynamic字段设置为true或者runtime

默认动态mapping

ES允许直接插入文档,不需要提前定义类型、字段 ,当你查询的时候会自动推测匹配显示出来。

curl -X PUT "localhost:9200/data/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{ "count": 5 }

使用kibana的话直接PUT data/_doc/1 … 就行

自动检测类型和添加字段就是动态mapping,ES有默认的检测规则,我们自己也可以定义自己的规则。

设计自己的mapping检测模板

这一块比较复杂

match_mapping_type
这个可以理解为根据字段默认检测出来的类型进行匹配

用的官方文档的案例:
可以看到当默认检测出来的字段类型为integer时,将替换为long类型;如果检测出来的类型为text或者keyword类型,将会替换为string类型。

PUT demo_index
{
   
  "mappings": {
   
    "dynamic_templates": [
      {
   
        "integers": {
   
          "match_mapping_type": "long",
          "mapping": {
   
            "type": &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值