文档和索引是es中最基础也是最核心的概念,熟悉对掌握文档和索引的操作是进一步学习es的基础,其实,如果你有关系型数据库的知识,可以把索引类比为数据库中的数据表,而文档可以理解为数据表中的一行记录。前面的索引就是对表的创建和mapping就是对字段的定义,而接下来我们要做的就是添加数据行,也就是我们今天要说到的-----文档。

添加文档
先创建一个新的索引 index003,此时的mappings中为空。

创建记录

POST http://192.168.145.131:9200/index003/_doc/46fZFHgBUzVT9dswVg–
es文件夹创建smb es创建文档_数据

_index: 文档数据所属那个索引,理解为数据库的某张表即可。
_type:文档数据属于哪个类型,新版本使用_doc。
_id:文档数据的唯一标识,类似数据库中某张表的主键。可以自动生成或者手动指定。
_score:查询相关度,是否契合用户匹配,分数越高用户的搜索体验越高。
_version:版本号。
_source:文档数据,json格式。

注意,没有指定id,es直接生成了随机字符串

es文件夹创建smb es创建文档_数据_02
注:如果索引没有手动建立mappings,那么当插入文档数据的时候,会根据文档类型自动设置属性类型。这个就是es的动态映射,帮我们在index索引库中去建立数据结构的相关配置信息。
###“fields”: {“type”: “keyword”} 对一个字段设置多种索引模式,使用text类型做全文检索,也可使用keyword类型做聚合和排序
###“ignore_above” : 256 设置字段索引和存储的长度最大值,超过则被忽略

在es-head中,点击数据浏览即可查看每条索引下的数据(文档)
es文件夹创建smb es创建文档_其他_03

查询

根据es_Id查询一条数据
http://192.168.145.131:9200/index003/_doc/46fZFHgBUzVT9dswVg–
es文件夹创建smb es创建文档_数据_04
根据条件查询es_Id 下的某一个属性
GET http://10.0.0.220:9200/index003/_doc/{_id}?_source=name
GET http://10.0.0.220:9200/index003/_doc/{_id}?_source=name,today ##多个条件
es文件夹创建smb es创建文档_其他_05
查询当前索引下的所有文档
http://192.168.145.131:9200/index003/_doc/_search
es文件夹创建smb es创建文档_版本号_06

根据条件查询当前索引下的符合条件的文档

GET    http://10.0.0.220:9200/index003/_doc/_search?_source=name
GET    http://10.0.0.220:9200/index003/_doc/_search?_source=name,id    ### 多条件查询

es文件夹创建smb es创建文档_版本号_07

查询某一个文档是否存在(如果存在,状态码为200,不存在则404)
es文件夹创建smb es创建文档_版本号_08
删除文档(并不是物理删除,而是逻辑删除,当文档增多时,ES才会选择被动物理删除),每次删除或修改“_version”都会累加。
es文件夹创建smb es创建文档_字段_09

修改文档
局部修改
es文件夹创建smb es创建文档_数据_10

es文件夹创建smb es创建文档_数据_11

全量修改

http://192.168.145.131:9200/index003/_doc/2
es文件夹创建smb es创建文档_数据_12
es文件夹创建smb es创建文档_版本号_13

通过版本号修改:文档乐观锁控制 if_seq_no与if_primary_term
老版本中,如果想要通过版本号来修改数据,则使用:

POST    http://10.0.0.220:9200/index003/_doc/1?version=2

但是新版本中,就要使用文档乐观锁控制 if_seq_no与if_primary_term

POST    http://10.0.0.220:9200/index003/_doc/1?if_seq_no={数值}&if_primary_term={数值}

es文件夹创建smb es创建文档_数据_14
修改后,_seq_no也会像version一样每次修改数值都累加
es文件夹创建smb es创建文档_其他_15