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