1,最近使用了2.3.5版本的ES,发现在创建索引的时候出了以下错误。
(1)例:
POST 192.168.11.166:9200/article3/article/_mapping
{ "properties": { "id": { "type": "keyword" }, "name": { "type": "text" }, "desc": { "type": "String" }, "createtime": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }, "modifiytime": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } }
(2)错误:
mapper_parsing_exception
No handler for type [keyword] declared on field [id]
(3)出错原因:
在创建索引的时候使用的是6.X版本的语句,在2.3.5版本中有些数据类型并不存在。
比如上面这个例子中,在创建索引的时候id的类型定义成keyword,但是在2.3.5版本中并没有这种数据类型。
2,下面是2.3.5版本中ES的数据类型:
(1)String
index: analyzed(默认) not_analyzed no:不被检索 ;
store: true 独立存储,false(默认)不存储,从_source中解析
(2)Numeric
数值类型,注意numeric并不是一个类型,它包括多种类型,比如:long,integer,short,byte,double,float,每种的存储空间都是不一样的,一般默认推荐integer和float
index: not_analyzed(默认) 保证该字段可以检索到;no:不被检索
store: true 独立存储,false(默认)不存储,从_source中解析
(3)Date:
index: not_analyzed(默认) 保证该字段可以检索到;no:不被检索
store: true 独立存储,false(默认)不存储,从_source中解析
format格式化:
strict_date_optional_time||epoch_millis(默认)
"date": {
"type": "date",
"format": "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
(4)Ip:
用来标识IPV4的地址
index: not_analyzed(默认) 保证该字段可以检索到;no:不被检索
store: true 独立存储,false(默认)不存储,从_source中解析
(5)Boolean:
布尔类型,所有的类型都可以标识布尔类型
False: 表示该值的有:false, "false", "off", "no", "0", "" (empty string), 0, 0.0
True: 所有非False的都是true
index: not_analyzed(默认) 保证该字段可以检索到;no:不被检索
store: true 独立存储,false(默认)不存储,从_source中解析
原文地址:https://www.cnblogs.com/excellencesy/p/11736079.html