es字段的数据类型

es的字段都有一个字段类型,不同的类型都各有所长,比如keyword类型的字段适合做聚合和排序,而text的类型可以用来全文搜索。下面按大类介绍下es常用的数据类型,es的数据字段的类型定义和搜索的方式紧密相关,
例如 keyword类型,Number类型在搜索时,只适合精准匹配,范围搜索之类的,不能用于全文搜索。
而text类型适合全文搜索。

1.Common types

1.1 binary

二进制类型 ,值以base64字符串的形式存贮,_source默认不会存贮该类型的值,如果需要实际的存贮,请设置 store属性为true默认是false
type:binary

PUT my-index-000003
{
   
  "mappings": {
   
    "properties": {
   
      
      "blob": {
   
        "type": "binary",
        "store": true
      }
    }
  }
}

PUT my-index-000003/_doc/2
{
   
  "blob": "U29tZSBiaW5hcnkgYmxvYg==" 
}

1.1 boolean

布尔类型
type:boolean
true :true,“true"都可以表示 true
false: false,“false”,”" 都可以表示 false

PUT my-index-000003
{
   
  "mappings": {
   
    "properties": {
   
      
      "boolean_field": {
   
        "type": "boolean"
      }
    }
  }
}

PUT my-index-000003/_doc/2
{
   
  "boolean_field": "false" 
}

1.2 Keywords

keywords大家庭包括 keyword,constant_keyword,widecard

keyword类型的字段适合聚合(aggragate)和排序(sort)操作,term和term_level查询比较快,如果字段的值都是数字,但term查询比较多,可以考虑定义keyword类型,而不是interger或者其他数字类型,

constant_keyword:所有文档的该字段的值都是一样的,可以定义该类型

widecard:适合通配符搜索日志等场景 ,text类型不支持通配符搜索,但widecard 在聚合和排序的性能会低于其他keyword类型,而且如果前导词是通配符,搜索效率相对会比较慢。

PUT my-index-000003/_mapping
{
   
  
    "properties": {
   
      "my_keyword"

你可能感兴趣的:(es,elasticsearch)