Elastic Search建表

前言

在ElasticSearch中,Index可以类比为关系型数据库中的库,Type可以类比为关系型数据库的表,Document可以类比为关系型数据库中的行。在ElasticSearch中如何建表,其实就是在ElasticSearch中如何建立Index,并且指定哪些field需要使用全文索引,指定field是什么类型等等。
ps:在ElasticSearch7.0中,type将会移除。本文建索引的格式为 PUT index_name/_doc

Mapping

Mapping指定了Index中的各个Field的类型是什么,Field类似于关系型数据库中的列属性。
我们在Mapping中指定Field是什么属性,该Field使用的分词器是什么等等,以下为一个简单的Mapping例子说明如何建立一个Mapping

PUT /my_index 
{
  "mappings": {
   "_doc":{
     "properties": { 
      "title":    { "type": "text"  }, 
      "name":     { "type": "text"  }, 
      "age":      { "type": "integer" },  
      "created":  {
        "type":   "date", 
        "format": "strict_date_optional_time||epoch_millis"
      }
    }
  }
  }
}

其中my_index为你的表名,在properties中,key为你的属性名,value里面指定了你的属性的相关类型等等。

查看表结构

GET my_index/_doc/_mapping

数据类型

  • Text类型
    可以用于分词和搜索的文本类型为Text,常见的配置如下例子
 "introduce":{
       "type":"text",
       "analyzer": "ik_max_word",
       "search_analyzer": "ik_max_word"
    }

(1)analyzer表示用于分词的分析器,这里使用的是IK分词器
(2)search_analyzer表示搜索的时候用于分词搜索语句的分析器,如果不指定则与analyzer相同

  • keyword类型
    keyword类型也是存储字符串类型的信息,一般用于存储Email,手机号码,状态码等等的结构化的信息。keyword可以用于排序,聚合。
    keyword不会被分词,如何需要进行模糊匹配应该使用text类型
    以下为建立keyword field的例子
PUT my_index
{
  "mappings": {
    "properties": {
      "tags": {
        "type":  "keyword"
      }
    }
  }
}
  • 数字类型
    ES支持的数字类型如下:
    ES数字类型

(1)当我们选用数据类型的时候,应该选用最小可以满足需求的数据类型,ES对不同的数据类型有优化。
(2)对于浮点数的优化,我们可以使用scaled_float代替浮点数,例如价格为20.123元,指定scaling_factor为100,ES内部会使用20123作为Long类型进行存储
例子如下

PUT my_index
{
  "mappings": {
    "properties": {
      "number_of_bytes": {
        "type": "integer"
      },
      "time_in_seconds": {
        "type": "float"
      },
      "price": {
        "type": "scaled_float",
        "scaling_factor": 100
      }
    }
  }
}
  • 对象类型
    ES还支持嵌套的JSON类型,适合存储属性多变的properties或者data等信息,其定义如下
PUT /my_index
{
  "mappings": {
    "properties": { 
      "region": {
        "type": "keyword"
      },
      "manager": { 
        "properties": {
          "age":  { "type": "integer" },
          "name": { 
            "properties": {
              "first": { "type": "text" },
              "last":  { "type": "text" }
            }
          }
        }
      }
    }
  }
}


如果是动态添加属性列,其类型对应动态Mapping那一章

更多的类型可以查阅官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html

动态索引

在ElasticSearch中,我们可以不指定Mapping,然后直接插入数据。ElasticSearch会从你的JSON数据里面分析对应的类型并映射到ElasticSearch中的Type,以下为类型映射关系。


类型映射关系图

例如我们直接插入一条文档

POST test_book/_doc/1
{
  "name":"泡沫",
  "author":"邓紫棋",
  "score":5.0
}

查看mapping可得


动态mapping结果

动态生成Mapping可以让我们不需要提前定义类型,可以用于未确定属性的场景下,当然如果我们需要改变类型映射的设置,可以参考官方文档
https://www.elastic.co/guide/en/elasticsearch/reference/6.7/dynamic-templates.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容