文档Document
用户存储在es中的数据文档,相当于mysql的表中的一行,Json结构形式,由字段组成,常见数据类型如下:
- 字符串:text、keyword,text是分词,keyword是不分词的
- 数值型:long、integer、short、byte、double、float、half_float、scaled_float
- 布尔:boolean
- 日期:date
- 二进制:binary
- 范围类型:integer_range、float_range、long_range、double_range、date_range
文档的元数据:用于标注文档的相关信息
- _index:文档所在的索引名
- _type:文档所在的类型名
- _id:文档唯一id
- _score:相关性算分
- _uid:组合id,有_type和_id组成(从6.x开始_type不再起作用,同_id一样)
- _source:文档的原始json数据,可以从这里获取每个字段的内容
- _all:整合所有字段内容到该字段,默认下禁用
文档相关API
es的欢迎语就是"you know,for search",所以es的主要api就是集中在查询一块,下面所讲的只是最简单、最基础的一部分,后续还会深入es的search api,如Query DSL、es的Java Api等。
1、创建文档,test_index1为索引名,mydoc指上面说到的_type,均为自定义,1指_id,如果未指定,会自动生成
2、查询文档,其中的_search表示查询该索引下的全部文档记录
3、批量操作文档,第一列的index表示新增,如果存在则覆盖,其余的两个是update修改和delete删除
4、删除文档
5、一次性查询多个文档
索引 Index
由具有相同字段的文档列表组成,相当于mysql中的表。
- 每个索引都有自己的mapping定义,用于定义字段名和类型
- 索引中存储着具有相同结构的文档
节点Node:一个Elasticsearch的运行实例,集群的其中一个构成单元。
正排索引:维护文档id到内容、单词的关联关系,例如
倒排索引:维护单词到文档id的关联关系,例如
这个时候比如来个需求,获取包含"领事馆"的文档id,则先根据倒排索引得到包含领事馆的文档id为1,再根据正排索引找到相应的文档内容,并将其返回即可。因为在es的索引中,每一个文档对应的数据结构都是json结构形式,每个json中的字段都会维护自己的倒排索引(未开启的除外,比如设置了index=false),所以查找起来也非常快。