创建mapping
PUT test_index { "mappings": { "_doc": { "properties": { "name":{ "type":"text" }, "age": { "type": "integer" }, "birth_day": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } } }
查看mapping
GET /test_index/_mapping
插入数据
PUT test_index/_doc/1 { "name":"1A", "age":22, "birth_day":"2019-12-21" }
查询
GET /test_index/_search
数据类型
- 字符串 - text
- 字符串 - keyword
- 数值型
- 布尔 - boolean
- 日期 - date
由于Json没有date类型,所以es通过识别字符串是否符合format定义的格式来判断是否为date类型 - 二进制 - binary
- 范围类型
integer:有符号32-bit integer,-2^31 ~ 2^31 - 1
short:有符号16-bit integer,-32768 ~ 32767
byte: 有符号8-bit integer,-128 ~ 127
double:64-bit IEEE 754 浮点数
float:32-bit IEEE 754 浮点数
half_float:16-bit IEEE 754 浮点数
scaled_float
format默认为:strict_date_optional_time||epoch_millis format
譬如 age 的类型是 integer_range,那么值可以是 {“gte” : 10, “lte” : 20};搜索 “term” : {“age”: 15} 可以搜索该值;搜索 “range”: {“age”: {“gte”:11, “lte”: 15}} 也可以搜索到
range参数 relation 设置匹配模式
INTERSECTS :默认的匹配模式,只要搜索值与字段值有交集即可匹配到
WITHIN:字段值需要完全包含在搜索值之内,也就是字段值是搜索值的子集才能匹配
CONTAINS:与WITHIN相反,只搜索字段值包含搜索值的文档
integer_range
float_range
long_range
double_range
date_range:64-bit 无符号整数,时间戳(单位:毫秒)
ip_range:IPV4 或 IPV6 格式的字符串