| 一级分类 | 二级分类 | 具体类型 |
|---|---|---|
| 基础类型 | 字符串类型 | text, keyword |
| 整数类型 | integer, long, short, byte | |
| 浮点类型 | double, float, half_float, scaled_float | |
| 逻辑类型 | boolean | |
| 日期类型 | date | |
| 范围类型 | range | |
| 二进制类型 | binary | |
| 复合类型 | 数组类型 | array |
| 对象类型 | object | |
| 嵌套类型 | nested | |
| 特殊类型 | 坐标类型 | geo_point |
| IP类型 | ip | |
| 范围类型 | completion | |
| 令牌计数类型 | token_count | |
| 附件类型 | attachment | |
| 抽取类型 | percolator |
基础类型
text类型
text取代了string,当一个字段需要全文搜索的时候,比如邮件内容,产品描述,应该使用text类型。
设置text类型后,字段内容会被分析,生成倒排索引以前,字符串会被分析器分成单个词项。
text类型字段不用于排序,很少用于聚合(termsAggregation)除外。
PUT /my_index{"mappings":{"properties":{"full_name": {"type":"text"}}}}
keyword类型
keyword类型适用于索引结构化字段,比如邮件地址、主机名、状态码、标签等。
字段多用于需要进行过滤、排序、聚合的场景。keyword类型字段只能通过精确值搜索到。
date类型
JSON中没有日期类型,所以在ES中,我们可以自己定义日期类型格式
PUT /my_index{"mappings": {"properties": {"created_time": {"type":"date","format":"yyyy-mm-dd HH:mm:ss"}}}}
object类型
JSON天生具有层级关系,文档会包含嵌套的对象。
array类型
在ES中,没有专门的Array数组类型。
但是在默认的情况下,任意一个字段都可以包含0个或多个值,这意味着每个字段的默认都是数组类型。在同一个数组中,数组元素的数据类型是相同的。
ES不支持元素为多个数据类型。常用的数组类型
[1,2,3]["sport","eat","walk"]"user":[{"name":"Marry"},{"name":"John"}]
ip类型
ip类型的字段用于存储IPV4或者IPV6的地址
PUT /my_index{"mappings": {"properties": {"ip_addr": {"type":"ip"}}}}
