当前位置:   article > 正文

7.3-elasticsearch索引字段类型详情_es索引库中long类型

es索引库中long类型
binary类型

binary类型存储字符串base64处理之后的值

date类型

json格式没有date类型,ES中表示date类型的有以下三种:
1)、字符串格式,如’2020-01-01’或’2020/05/26 09:45:00’;
2)、long类型数值,表示从毫秒开始的计数;
3)、integer类型数值,表示从秒开始的计数;

内部date会转换成UTC时间并以毫秒表示其值;
日期查询会在内部转换为long类型形式的范围查询,并且聚合和存储字段的结果将转换为字符串(具体取决于该字段的日期转换格式);
日期将始终以字符串形式呈现,即使一开始在JSON文档中提供的类型为long;

//date类型字段定义
PUT /date_index_demo
{
   
  "mappings": {
   
    "properties": {
   
      "date":{
   
        "type": "date"
      }
    }
  }
}

PUT /date_index_demo/_doc/1
{
   
  "date":"2020-01-01"
}

PUT /date_index_demo/_doc/2
{
   
  "date":"2020-01-01T12:00:00Z"
}

PUT /date_index_demo/_doc/3
{
   
  "date":"2020-01-01T12:00:00"
}

PUT /date_index_demo/_doc/4
{
   
  "date":1420070400001
}

//排序查询,内部会转为long类型进行处理
GET /date_index_demo/_search
{
   
  "sort": [
    {
   
      "date": {
   
        "order": "asc"
      }
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

日期的多种格式化形式
可以使用||分隔符指定多种日期格式,es会依次尝试每种格式,直到找到匹配的格式,将日期格式转换成字符串会优先使用第一种格式转化;

PUT /date_index_demo
{
   
  "mappings": {
   
    "properties": {
   
      "date":{
   
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
join类型

存在的约束:
1)、一个索引当中仅允许一个join类型的映射;
2)、父文档与子文档一定要在同一个分片之上,这就意味着在做get/delete/update操作的时候需要指定相同的routing值;
3)、一个元素可以有多个子级,只允许有一个父级;
4)、允许在join类型的字段上添加一个新的关系;
5)、允许在一个元素中添加一个子级(要求元素需要存在父级);

使用父级join查询

父级join查询及聚合操作
参考has_child和has_parent查询,children聚合及inner hits;
join标识字段可以使用聚合和脚本查询,也可以使用parent_id查询;

同一父级对应多个子级

keyword类型

针对类似于ID、邮箱、域名、状态、邮政编码和标签之类的表示字段,在查询操作时以精确值作为条件,同时可作为排序和聚合操作;
如果针对文本内容做全文索引,使用text字段表示更合适;
数值数据不一定需要用数值类型来表示,若不用于range查询则可以使用keyword代替,因为keyword类型字段针对term或term-level的查询更加友好;
考虑将字段设置成keyword类型可考虑以下因素:
1)、针对该字段有没有range操作的需求;
2)、查询效率上的考虑,因为字段类型为keyword相比数值类型效率更高;

nested类型

nested类型是object类型的一种特殊形式,其允许对象数组被索引且可以独立进行查询;
es没

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/981297
推荐阅读
相关标签
  

闽ICP备14008679号