文档操作语法:
{GET|POST|DELETE|PUT} {索引名称|索引名称表达式} {_doc|_create|_search} {文档ID} {?param=value} {body参数}
索引的名称
{_doc|_create|_search|_source} _doc _create _search _source使用 /{index}/_source/{id} 端点仅获取文档的 _source 字段,周围没有任何其他内容。
GET twitter/_source/1
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
&esnp;HEAD请求检查文档是否存在
### 检查文档是否存在,存在返回:200 - OK HEAD twitter/_source/1 ### 检查文档是否存在,不存在返回:404 - Not Found HEAD twitter/_source/2{文档ID} {?param=value} op_type
op_type=createhuman
人类可读懂格式,例如返回kb,可视化日期
human=falseflat_settings
flat_settings=false返回结果平面化
flat_settings=falsepretty
格式化返回结果。
pretty=true_source
默认情况下,get 操作会返回 _source 字段的内容,除非您使用了 stored_fields 参数或 _source 字段被禁用。 您可以使用 _source 参数关闭 _source 检索。
_source=false
不返回_source 字段。
_source=user,message
_source字段返回 user和message字段。
_source_includes & _source_excludes如果您只需要完整 _source 中的一两个字段,则可以使用 _source_includes 和 _source_excludes 参数来包含或过滤掉您需要的部分。 这对于部分检索可以节省网络开销的大型文档特别有用。 这两个参数都采用逗号分隔的字段列表或通配符表达式。
_source_includes=user,message&_source_excludes=message
只返回user字段,message字段不会返回
{
"_index" : "twitter",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"user" : "kimchy"
}
}
stored_fields
get 操作允许指定一组存储字段,这些字段将通过传递 stored_fields 参数返回。 如果请求的字段没有被存储,它们将被忽略。
前提:
PUT twitter
{
"mappings": {
"properties": {
"counter": {
"type": "integer",
"store": false
},
"tags": {
"type": "keyword",
"store": true
}
}
}
}
PUT twitter/_doc/1
{
"counter" : 1,
"tags" : ["red"]
}
tags字段使用store=true,couter字段使用store=false。
store=true 的字段才会在使用stored_fields参数时才能返回。
GET twitter/_doc/1?stored_fields=tags,counter
返回结果:
{
"_index": "twitter",
"_type": "_doc",
"_id": "1",
"_version": 1,
"_seq_no" : 22,
"_primary_term" : 1,
"found": true,
"fields": {
"tags": [
"red"
]
}
}
preference
控制执行 get 请求的分片副本的首选项。 默认情况下,操作在分片副本之间是随机的。
preference=_local
_local:如果可能,该操作将更倾向于在本地分配的分片上执行。Custom (string) value:自定义值将用于保证相同的分片将用于相同的自定义值。 当在不同的刷新状态下击中不同的分片时,这有助于“跳跃值”。 示例值可以是 Web 会话 ID 或用户名之类的东西。 refresh
控制此请求所做的更改何时对搜索可见。
Index, Update, Delete, and Bulk APIs 支持refresh参数。
refresh=true|false(默认)|wait_for
true:操作发生后立即刷新相关的主分片和副本分片(不是整个索引),以便更新的文档立即出现在搜索结果中。 这只能在仔细考虑并验证它不会导致性能不佳(从索引和搜索的角度来看)之后进行。false:不采取与刷新相关的操作。 此请求所做的更改将在请求返回后的某个时间点可见。wait_for:等待请求所做的更改通过刷新可见,然后再回复。 这不会强制立即刷新,而是等待刷新发生。 Elasticsearch 会自动刷新每个 index.refresh_interval 更改的分片,默认为1秒。 该设置是动态的。 调用 Refresh API 或在任何支持它的 API 上将 refresh 设置为 true 也会导致刷新,进而导致已经运行的带有 refresh=wait_for 的请求返回。
除非您有充分的理由等待更改变得可见,否则请始终使用 refresh=false
realtime默认情况下,get API 是实时的,不受索引刷新率的影响(当数据对搜索可见时)。 如果文档已更新但尚未刷新,get API 将就地发出刷新调用以使文档可见。 这也将使自上次刷新后更改的其他文档可见。 为了禁用实时 GET,可以将实时参数设置为 false。
realtime=truetimeout
操作超时时间,5m:5分钟。
timeout=5m
默认情况下,索引操作将在主分片上等待最多 1 分钟,然后才会失败并以错误响应。 timeout 参数可用于明确指定等待的时间。 这是将其设置为 5 分钟(5m)
version & version_type使用示例:
version=2|version_type=externalversion
每个索引文档都有一个版本号。 默认情况下,使用从 1 开始的内部版本控制,每次更新都会增加,包括删除。 可选地,版本号可以设置为外部值(例如,如果在数据库中维护)。 要启用此功能,应将 version_type 设置为 external。 提供的值必须是大于或等于 0 且小于 9.2e+18 左右的数字长整型值。
使用外部版本类型时,系统会检查传递给索引请求的版本号是否大于当前存储文档的版本。 如果为真,文档将被索引并使用新的版本号。 如果提供的值小于或等于存储文档的版本号,则会发生版本冲突,索引操作将失败。
version_type internal仅当给定版本与存储文档的版本相同时才索引文档。
external or external_gt仅当给定版本严格高于存储文档的版本或不存在现有文档时才索引文档。给定版本将用作新版本,并将与新文档一起存储。提供的版本必须是非负长整数。
external_gte仅当给定版本等于或高于存储文档的版本时才索引文档。如果没有现有文档,则操作也会成功。给定版本将用作新版本,并将与新文档一起存储。提供的版本必须是非负长整数。
{body参数}


