Elasticsearch之映射属性和数值类型

一、属性

       Elasticsearch中每个索引定义时都有一个映射mappings,该映射确定如何对文档建立索引。一个映射mappings中主要包含两部分:

        1、元字段:主要包括每个文档的_index、_type、_id和_source以及_all等。其中常用的属性有:

                1>dynamic:是否可以动态索引数据。可以取值"true"、"false"或"strict",默认为"true"。"true"表示如果存在索引中未定义的字段数据时,自动索引该字段数据,即该字段可以被作为查询条件被查询到;"false"表示如果存在索引中未定义的字段数据时,不索引该字段数据,即该字段作为查询条件不能被查询到,但注意_source中是有该字段的;"strict"表示如果存在索引中未定义的字段数据时,入es时会直接报错;

                2>_source:文档的原始结构和数据。它的enabled属性默认是true,使被检索到的文档中都会有_source字段,包含了除_id外的所有字段及内容。可以将其enabled属性设置为false使其不返回,也可以使用"includes"或"excludes"指定只包含或不包含指定的字段;

                3> _all:文档的所有字段内容组成字符串的集合,字段与字段之间用空格分隔。它的enabled属性默认是false,高版本下_all已被copy_to所替代;

        2、properties属性列表:其中定义了文档中的属性(可以理解为字段,又叫域)。

更多属性参考:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/mapping-params.html

二、数值类型

       Elasticsearch创建索引时,需要定义每个字段(域)的类型,简单类型默认都支持数组形式,不需要特意再声明是数组类型。常用类型有:

映射类型说明
string字符串,es5后被移除,被拆成keyword和text
keyword精确匹配的字符串,不会做分词处理
text全文检索的字符串,分析器会做分词处理
byte、short、integer、long整型
float、double浮点数
boolean布尔型
date日期
integer_range、float_range、long_range、double_range、date_range表示对应类型的范围
多层级对象通过properties将若干简单域组成上级域的属性
nested对象类型的数组
completion用于支持Completion Suggester
geo_point、geo_shape地理位置、地理形状等

                1>多层级对象示例:

//在mappings中定义为:
{
    "properties": {
        "name": {
            "properties": {
                "first_name": {
                    "type": "keyword"
                },
                "middle_name": {
                    "type": "keyword"
                },
                "last_name": {
                    "type": "text"
                }
            }
        }
    }
}
//实际存储的数据示例为:
{
    "_source": {
        "name": {
            "last_name": "Clinton",
            "middle_name": "Jefferson",
            "first_name": "William"
        }
    }
}

                2>nested示例:

//在mappings中定义为:
{
    "properties": {
        "scores": {
            "type": "nested",
            "properties": {
                "chinese": {
                    "type": "long"
                },
                "math": {
                    "type": "long"
                }
            }
        }
    }
}
//实际存储的数据示例为:
{
    "_source": {
        "scores": [
            {
                "chinese": 100,
                "math": 99
            },
            {
                "chinese": 99,
                "math": 98
            },
            {
                "chinese": 100,
                "math": 100
            }
        ]
    }
}

更多字段类型请参考:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/mapping.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值