elasticsearch 5.4 mapping和数据类型

基本的数据类型

索引各字段的数据类型可以在初始化索引的时候进行通过mapping进行定义,若不定义则当首次在索引中插入数据的时候会根据数据自动为字段赋予数据类型(不建议这么做,因为某些场景需要特定的数据类型)
1.String 类型
包括text和keyword
text : 非结构化的字符串,比如短信内容,通知公告等,这类数据插入是户通过默认的分词器进行分词,这样对这些字段进行查询时会并非直等查询,是分词模式查询,查询结果会显示相关性,并且默认text类型的字段是不能分组及排序的,如需要则需要开启该字段的fielddata=true,但是这样耗费大量的内存,不建议这么使用

设置数据类型为text

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "full_name": {
          "type":  "text"
        }
      }
    }
  }
}
#full_name为要设置的字段

设置fielddata=true

PUT megacorp/_mapping/employee/
{
  "properties": {
    "interests": {
      "type": "text",
      "fielddata": true
    }
  }
}
#interests为要修改的字段

keyword : 结构化的字符,例如手机号之类的。该字段的查询是直等查询不经过分词,默认可分组及排序。

设置数据类型为keyword

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "apId": {
          "type":  "keyword"
        }
      }
    }
  }
}
#full_name为要设置的字段

注:针对字符串类型的数据在索引初始化时要明确设置数据类型

2.number (官方文档)
有long, integer, short, byte, double, float, half_float, scaled_float几种类型

  • long -263~263-1的64位整数
  • integer -231~231-1的32位整数
  • short -32,768~32,767的16位整数
  • byte -128~127的8位整数
  • doublefloat,half_float,scaled_float

3.时间类型
date : es支持时间类型
可设置多种时间格式

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
  }
}

4.Boolean
boolean
False values: false, "false", "off", "no", "0", "" (empty string), 0, 0.0
True values:其他值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容