查询映射关系
类型上对字段的类型进行映射,我们前面知道可以通过get方法请求_mapping查询指定类型的映射关系:
此语句可以查询get-together索引下的group类型的映射关系
更新映射关系
使用put方法可以更新类型的映射
这里指定了new-events类型的字段映射关系,声明了一个新的字段host,类型上String
值得思考的是,已经有其他索引了,这个新增的映射关系,会生效吗?答案是肯定的,ES会对现有的映射关系和新增的映射关系做一个merge
如果是对映射字段的类型进行修改,这样是无法操作的。需要删除数据,重新定义映射关系,并重新索引。
常见的字段类型
字符串
字符串在进行索引的时候,默认将单词变为小写,然后逐个添加索引
可以通过index选项指定索引方式
analyzed: 默认的方式,逐个单词变小写建立索引
not_analyzed:整个字符串整体建立索引
no:不建立索引
数值类型
支持的数值类型和JAVA完全一致,byte,short,int,long,float,double
ES自己也会默认使用long和double识别数值
日期
日期类型可以使用默认的ISO 8601格式
也可以使用format指定格式
布尔类型
默认支持true和false
数组类型
数组可以使用[]进行索引
声明映射关系时,使用的是基础类型:
多字段
将某一字段建立索引的同时,使用不同的策略生成新的映射关系
此处对tags建立了两个匹配关系,一个是analyzed,对每一个单词建立索引,另外一个是针对整体的字段进行映射,not_analyzed
存储原始json文档
使用_source可以存储原始文档,便于文档的更新操作,
默认_source的enabled是true,表示支持存储原始json
在查询的时候就会返回原始文档的内容:
检索时,_source的作用
实际上_source存储了原始数据,我们在搜索时可以指定字段,而不是完整的_source
这样返回的就是指定的字段了
我们也可以在更新映射关系的时候,指定哪些字段需要存储:
这里使用了store属性,标记了name需要存储下来
检索时,_all的作用
默认不指定字段进行搜索的时候,检索范围是所有的字段
对于不知道从哪里查询的场景,这种是适用的
如果所有的检索场景都是指定字段的,可以使用enabled关闭所有字段检索:
当然,可以使用include_in_all来标记是否支持再全字段检索中使用:
如果不指定字段查询,_all检索的范围将不再包含organizer字段
在索引时,指定id
我们前面建立索引的时候使用的是put方法,指定了文档的id
此时的id就是指定的1st
由ES自主生成文档id
可以使用POST方法,让ES自动生成文档的id
注意,url中不再指定id,此时文档的id由ES生成
检索时,支持指定索引
默认情况下,不支持直接指定索引查询
可以通过配置_index的enabled来开启支持