一、文档增删改查及局部更新
### --- 文档增删改查及局部更新
~~~ 文档,即索引库中的数据,会根据规则创建索引,将来用于搜索。
~~~ 可以类比做数据库中的一行数据。
### --- 新增文档
~~~ 新增文档时,涉及到id的创建方式,手动指定或者自动生成。
~~~ 新增文档(手动指定id)
二、创建文档:手动指定ID
### --- 语法
~~~ # 语法
POST /索引名称/_doc/{id}
### --- 创建文档:手动指定id
~~~ # 创建示例
POST /yanqi-company-index/_doc/1
{
"name" : "百度",
"job" : "小度用户运营经理",
"payment" : "30000",
"logo" :
"chrome://new-tab-page/icons/google_logo.svg"
}
POST /yanqi-company-index/_doc/2
{
"name" : "百度",
"job" : "小度用户运营经理",
"payment" : "30000",
"logo" :
"chrome://new-tab-page/icons/google_logo.svg",
"address":"北京市昌平区"
}
POST /yanqi-company-index/_doc/3
{
"name1" : "百度",
"job1" : "小度用户运营经理",
"payment1" : "30000",
"logo1" :
"chrome://new-tab-page/icons/google_logo.svg",
"address1":"北京市昌平区"
}
三、创建文档:自动生成ID
### --- 新增文档(自动生成id)
~~~ # 语法
POST /索引名称/_doc
{
"field":"value"
}
### --- 创建示例:自定生成id
~~~ 可以看到结果显示为: created ,代表创建成功。
~~~ 另外,需要注意的是,在响应结果中有个_id 字段,这个就是这条文档数据的唯一标识,
~~~ 这个_id作为唯一标示,这里是Elasticsearch帮我们随机生成的id。
~~~ # 示例
POST /yanqi-company-index/_doc/
{
"name" : "百度",
"job" : "小度用户运营经理",
"payment" : "30000",
"logo" :
"chrome://new-tab-page/icons/google_logo.svg"
}
二、查看单个文档
### --- 查看单个文档语法
### --- 文档元数据解读:
~~~ # 语法
~~~ GET /索引名称/_doc/{id}
~~~ # 示例
~~~ GET /yanqi-company-index/_doc/1
元数据项 | 含义 |
_index | document所属index |
_type | document所属type,Elasticsearch7.x默认type为_doc |
_id | 代表document的唯一标识,与index和type一起,可以唯一标识和定位一个document |
_version | document的版本号,Elasticsearch利用_version (版本号)的方式来 确保应用中相互冲突的变更不会导致数据丢失。需要修改数据时, 需要指定想要修改文档的version号,如果该版本不是当前版本号,请求将会失败 |
_seq_no | 严格递增的顺序号,每个文档一个,Shard级别严格递增, 保证后写入的Doc seq_no大于先写入的Doc的seq_no |
_primary_term | primary_term也和seq_no一样是一个整数,每当Primary Shard发生重新分配时, 比如重启,Primary选举等,_primary_term会递增1 |
found | true/false,是否查找到文档 |
_source | 存储原始文档 |
三、查看所有文档
### --- 查看所有文档语法
~~~ # 语法
POST /索引名称/_search
{
"query":{
"match_all": {
}
}
}
### --- 创建示例
~~~ # 示例
POST /yanqi-company-index/_search
{
"query":{
"match_all": {
}
}
}
四、_source定制返回结果
### --- _source定制返回结果
### --- 查看示例:GET /yanqi-company-index/_doc/1?_source=name,job
~~~ 某些业务场景下,我们不需要搜索引擎返回source中的所有字段,
~~~ 可以使用source进行定制,如下,多个字段之间使用逗号分隔
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor