ElasticSearch-Mapping field字段type类型

  参考官方英文文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html

  Mapping是定义文档及其包含的字段如何存储和编制索引的过程,每个索引都有一个映射类型,用于确定文档将如何编制索引。

Meta-fields
包括文档的_index_type_id_source 字段

es 字段数据类型:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html

1.字符串类型
textkeyword
2.数值类型
long、integer、short、byte、double、float、half_float、scaled_float
3.日期类型
date
4.布尔值类型
boolean
5.二进制类型
binary(接受二进制值作为Base64编码字符串。 该字段默认情况下不存储,不可搜索)
6.范围类型
integer_range、float_range、long_range、double_range、date_range
7.Array数据类型Array不需要定义特殊类型
在 Elasticsearch 中,没有特定的 array 类型。默认情况下,任何字段都可以包含0个或者更多值,但是,所有 array 中的值必须具有相同的数据类型,例如:
字符串数组:[“one”, “two”]
整数数组:[1,2]
数组的数组:[1, [2, 3]],等价于[1,2,3]
对象数组:[ { “name”: “Mary”, “age”: 12 }, { “name”: “John”, “age”: 10 }]

当自动添加一个字段,array 的第一个值决定了字段的类型。所有接下来的值必须使用相同的数据类型或者必须至少能将他们转换为与它相同的类型
数组不支持混合的数据类型:[10, “some string”]
数组可以包含null值,这些值可以由配置的null_value替换或完全跳过。一个空的array[]被视为不存在的字段-无值的字段。

文档中使用 array 类型不需要提前做任何配置,天生就支持。

PUT my_index/my_type/1
{
  "message": "some arrays in this document...",
  "tags":  [ "elasticsearch", "wow" ],
  "lists": [
    {
      "name": "prog_list",
      "description": "programming list"
    },
    {
      "name": "cool_list",
      "description": "cool stuff list"
    }
  ]
}

8.Object数据类型 (json嵌套)
object for single JSON objects

{ 
  "region": "US",
  "manager": { 
    "age":     30,
    "name": { 
      "first": "John",
      "last":  "Smith"
    }
  }
}

9.地理数据类型
Geo-pointGeo-Shape(比较复杂,参考官网文档,一般用Geo-point就可以了)
10.特殊数据类型
ip(IPv4 and IPv6 addresses)
completion(自动完成/搜索)
token_count(数值类型,分析字符串,索引的数量)
murmur3(索引时计算字段值的散列并将它们存储在索引中的功能。在高基数和大字符串字段上运行基数聚合时有很大帮助)
join(同一索引的文档中创建父/子关系)

以下是常用的参数类型定义&赋值demo

类型参数定义赋值
text“name”:{“type”:“text”}“name”: “zhangsan”
keyword“tags”:{“type”:“keyword”}“tags”: “abc”
date“date”:{“type”: “date”}“date”:“2015-01-01T12:10:30Z”
long“age”:{“type”:“long”}“age” :28
double“score”:{“type”:“double”}“score”:98.8
boolean“isgirl”: { “type”: “boolean” }“isgirl” :true
ip“ip_addr”:{“type”:“ip”}“ip_addr”: “192.168.1.1”
geo_point“location”: {“type”:“geo_point”}“location”:{“lat”:40.12,“lon”:-71.34}

Mapping parameters
https://www.elastic.co/guide/en/elasticsearch/reference/6.6/mapping-params.html

analyzer
normalizer
boost
coerce
copy_to
doc_values
dynamic
enabled
fielddata
eager_global_ordinals
format
ignore_above
ignore_malformed
index_options
index_phrases
index_prefixes
index
fields
norms
null_value
position_increment_gap
properties
search_analyzer
similarity
store
term_vector

注意:
  _typees 早期版本的设计缺陷。同一索引下,不同type的数据也会存储其他typefield的大量空值,造成资源浪费。所以,不同类型数据,要放到不同的索引中。在es9中,将会彻底删除type
  在5.x以前的版本里边,一个index下面是支持多个type的;
  在6.x的版本里改为一个index只支持一个typetype可以自定义。ElasticSearch 6.x 版本支持创建mapping直接指定type
  7.x的版本所有的type默认为_doc(自定义type也能用,但是会提示不推荐)。ElasticSearch 7.x 版本不支持创建mapping直接指定type,而是提供一个默认的type_doc
在这里插入图片描述
  如果想要在 ElasticSearch 7.x版本中创建mapping并指定type,则需要在URL后面添加参数:include_type_name=true;【注:这个参数默认是:include_type_name=false

  创建自定义typemapping

PUT  http://ip:port/索引名?include_type_name=true
{
    "mappings": {
        "类型" : {   //----类型
            "properties": {
                "Field名" : {
                    "type" : "具体的字段数据类型"  
                }
            }
        }
    }
}

  查看mapping:

GET http://ip:port/索引名/类型/_mapping
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小强签名设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值