Index API | Elasticsearch Reference [7.6] | Elastic
语法
# 手动指定文档 id
PUT /<index>/_doc/<_id>
# 自动创建文档 id
POST /<index>/_doc/
# 仅当索引不存在时候才进行创建
PUT /<index>/_create/<_id>
POST /<index>/_create/<_id>
# 等用于
PUT /<index>/_doc/<_id>?op_type=create
PUT /<index>/_doc/<_id>?op_type=create
示例
# 索引 document,并自动创建 id
POST twitter/_doc/
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
# 索引 document,指定 id,且仅当该 id 不存在时创建
PUT twitter/_create/1
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
默认情况下,创建文档时如果索引不存在,会自动创建该索引模板,如果需要手动进行索引模板的字段映射,可以查看 mapping,put mapping API。
默认情况下进行 index 操作,同个 id 新版本的 document 总会被创建,如果不接受这种情况,可以使用 _update
API 代替,并设置 detect_noop = true
(该选项设置后对于旧的数据不会生效)。
?refresh | Elasticsearch Reference [7.6] | Elastic
?refresh
参数用于控制该次操作(index
、update
、delete
、bulk
)的更改是否对搜索可见,拥有以下值:
true(或者空值)
操作发生后,立即刷新相关 primary shard 和 replica shard,只有在确保不会导致搜索性能过于糟糕的情况下才可以这么做。
wait_for
在 api 请求返回之前,等待刷新,不会立即刷新返回。es 每间隔一个 index.refresh_interval
(默认 1s)会自动刷新已经改变的 shard。
注意 refresh 设置是动态的,如果在其他任何支持该参数的 api 设置 refresh=true
,会导致当前(refresh=wait_for
)立即刷新返回,反之亦然。
false(默认)
不采取任何刷新相关的操作,该请求所做的更改将在请求返回后的某个时间点上显示出来。一般情况下采用采用这种方式。