es-mapping-parameters-3

本文详细介绍了Elasticsearch中date类型的format参数设置,如何处理字段最大长度ignore_above,以及如何配置ignore_malformed参数来忽略字段格式错误。同时,探讨了index_options对text类型字段的索引控制,以及index_phrases如何影响精确短语查询的效率与磁盘空间消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11.format 格式化

date是es中的基础数据类型,在es内部其实存储的时间戳,put写入的时候标准UTC时间或者时间戳。
具体而言,mapping设置字段的type是date,则写入数据的格式是按照默认的方式识别-strict_date_optional_time||epoch_millis,这表明只接受符合strict_date_optional_time格式的字符串值,或者long型数字,否则会写入失败。经过测试strict_date_optional_time是如下其中一种格式都可以,并不支持我们常用的格式
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
yyyy/MM/dd
yyyy-MM-ddTHH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy-MM-ddTHH:mm:ss.SSS
那么如何使用常用的时间格式写入Date?需在mapping设置字段时候加上format参数,用于指定插入的时间格式,但是如果指定固定的格式,则使用其他格式的时候将会失败,但是也是可以多种格式组合在一起。

##1.Date格式
DELETE my-index-000001
PUT my-index-000001
{
   
  "mappings": {
   
    "properties": {
   
      "date":{
   
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
      }
    }
  }
}

#format。通过format设置日期格式,常见的可以设置成年月日时分秒、年月日及毫秒值三种格式。
#ignore_malformed。默认值false。如果为true,则忽略格式错误的数字。如果为false(默认值),则格式错误的数字将引发异常并拒绝整个文档。
#null_value。默认是null。接受采用配置格式之一的日期值作为该字段,以替换任何显式的空值。默认为null,这意味着该字段被视为丢失。

GET my-index-000001/_mapping

#插入数据
POST my-index-000001/_bulk
{
   "index":{
   }}
{
   "date": "2021-01-25 10:01:12", "company": "中国烟草", "ratal": 5700000}
{
   "index":{
   }}
{
   "date": "2021-01-25 10:01:13", "company": "华为", "ratal": 4034113.182}
{
   "index":{
   }}
{
   "date": "2021-01-26 10:02:11", "company": "苹果", "ratal": 7784.7252}
{
   "index":{
   }}
{
   "date": "2021-01-26 10:02:15", "company": "小米", "ratal": 185000}
{
   "index":{
   }}
{
   "date": "2021-01-26 10:01:23", "company": "阿里", "ratal": 1072526}
{
   "index":{
   }}
{
   "date": "2021-01-27 10:01:54", "company": "腾讯", "ratal": 6500}
{
   "index":{
   }}
{
   "date": "2021-01-28 10:01:32", "company": "蚂蚁金服", "ratal": 5000}
{
   "index":{
   }}
{
   "date": "2021-01-29 10:01:21", "company": "字节跳动", "ratal": 10000}
{
   "index":{
   }}
{
   "date": "2021-01-30 10:02:07", "company": "中国石油", "ratal": 18302097}
{
   "index":{
   }}
{
   "date": "1648100904", "company": "中国石化", "ratal": 32654722}
{
   "index":{
   }}
{
   "date": "2021-11-1 12:20:00", "company": "国家电网", "ratal": 82950000}

12.ignore_above 字段的最大长度

最大的字段值长度,超出这个长度的字段将不会被索引,但是会存储。

##设置message 的长度最长为20,超过20的不被索引,这里的不被索引是这个字段不被索引,但是该document中的其他字段仍然可以被索引到。
DELETE my-index-000001
PUT my-index-000001
{
   
  "mappings": {
   
    "properties": {
   
      "message": {
   
        "type": "keyword",
        "ignore_above": 20 
      }
    }
  }
}

##写入成功,索引成功
PUT my-index-000001/_doc/1 
{
   
  "message": "Syntax error"
}

##超过20字符 写入成功,索引成功
PUT my
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值