Elasticsearch 映射 ( Mapping )

索引中每个文档都有一个类型( type ) 。 每个类型拥有自己的映射 ( mapping )或者模式定义 (schema definition)

一个映射定义了字段类型,每个字段的数据类型,以及字段被 Elasticsearh 处理的方式。映射还用于设置关联到类型上的元数据

所以,从某些方面说,映射是存储在索引中的文档的大纲,或者说相当于数据库中的某个表的表结构

范例

例如下面这个请求,用于定义银行账户详情

POST http://localhost:9200/bankaccountdetails?pretty

请求正文

{
   "mappings":{
        "report":{
            "properties":{
                "name":{ "type":"text"}, 
                "date":{ "type":"date"},
                "balance":{ "type":"double"}, 
                "liability":{ "type":"double"}
            }
        }
    }
}

返回响应如下

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "bankaccountdetails"
}

字段类型

Elasticsearch 为文档中的字段提供了大量的数据类型支持。以下列出的数据类型都可以用来定义文档的字段类型

  1. 基础数据类型

    Elasticsearch 几乎支持所有系统的基本数据类型

    1. 整型 ( integer )
    2. 长整型 ( long int )
    3. 双精度型 ( double )
    4. 短整型 ( short int )
    5. 字节型 ( byte )
    6. 浮点型 ( float )
    7. 字符串型 ( string )
    8. 日期类型 ( date )
    9. 布尔类型 ( boolean )
    10. 二进制类型 ( binary )
  2. 复合数据类型

    复合数据类型一般由一种或多种数据类型组合而成,比如数据、JSON 对象和嵌套数据类型。

    下面的请求的请求正文和响应正文就是一个嵌套数据类型的

    POST http://localhost:9200/tabletennis/team/1?pretty
    

    请求正文

    {
       "group" : "players",
       "user" : [
          {
             "first" : "dave", "last" : "jones"
          },
    
          {
             "first" : "kevin", "last" : "morris"
          }
       ]
    }
    

    响应正文

    {
      "_index" : "tabletennis",
      "_type" : "team",
      "_id" : "1",
      "_version" : 1,
      "result" : "created",
      "_shards" : {
        "total" : 2,
        "successful" : 1,
        "failed" : 0
      },
      "_seq_no" : 0,
      "_primary_term" : 1
    }
    
  3. Geo 数据类型

    Geo 数据类型用于定义一个地理位置信息

    例如

    数据类型 说明
    geo_point 用于定义经度和纬度
    geo_shape 用于定义矩形等不同的几何形状
  4. 特殊的数据类型

    特殊的字段类型是指那些由特殊用途的数据类型

    例如,IPv4("ip") 接受一个 IP 4 的地址

    例如,自动完成数据类型用于支持自动完成或输入建议

    例如,token_count 用于统计字符串中的令牌数量

类型映射

每个索引都会映射到一个或多个类型,这样就可以在逻辑上将索引的文档细分成一个个小的组成部分

如果传递的参数不同,那么映射类型也可以彼此不同

  1. 元字段 ( Meta-Fields )

    这些字段提供了映射和与该字段有关的其它对象的信息

    例如

    1. _index
    2. _type
    3. _id
    4. _source
  2. 普通字段 ( Fields )

    不同的映射可以含有不同数量的字段,且字段的类型也可以各不相同

动态映射

Elasticsearch 提供了一个用户友好的自动创建映射机制

用户可以将数据直接发布到任何未预先定义的映射中,Elasticsearch 将自动创建映射

这种机制,称为动态映射

范例

例如下面的请求

POST http://localhost:9200/accountdetails/tansferreport

请求正文

{
   "from_acc":"7056443341", "to_acc":"7032460534",
   "date":"6/28/2019", "amount":10000
}

响应内容

{
  "_index" : "accountdetails",
  "_type" : "tansferreport",
  "_id" : "6EnaRmQBwP8hfMtC_uoj",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

映射参数

映射参数定义了映射的结构、字段的信息、存储的信息以及搜索时将如何分析映射的数据

下面列出了 Elasticsearch 支持的所有映射参数

  1. analyzer
  2. boost
  3. coerce
  4. copy_to
  5. doc_values
  6. dynamic
  7. enabled
  8. fielddata
  9. geohash
  10. geohash_precision
  11. geohash_prefix
  12. format
  13. ignore_above
  14. ignore_malformed
  15. include_in_all
  16. index_options
  17. lat_lon
  18. index
  19. fields
  20. norms
  21. null_value
  22. position_increment_gap
  23. properties
  24. search_analyzer
  25. similarity
  26. store
  27. term_vector
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.