- Elasticsearch 指南其他版本
- 8.17 中的新功能
- Elasticsearch 基础
- 快速入门
- 设置 Elasticsearch
- 升级 Elasticsearch
- 索引模块
- 映射
- 文本分析
- 索引模板
- 数据流
- 摄取管道
- 别名
- 搜索您的数据
- 重新排名
- 查询 DSL
- 聚合
- 地理空间分析
- 连接器
- EQL
- ES|QL
- SQL
- 脚本
- 数据管理
- 自动缩放
- 监视集群
- 汇总或转换数据
- 设置高可用性集群
- 快照和还原
- 保护 Elastic Stack 的安全
- Watcher
- 命令行工具
- elasticsearch-certgen
- elasticsearch-certutil
- elasticsearch-create-enrollment-token
- elasticsearch-croneval
- elasticsearch-keystore
- elasticsearch-node
- elasticsearch-reconfigure-node
- elasticsearch-reset-password
- elasticsearch-saml-metadata
- elasticsearch-service-tokens
- elasticsearch-setup-passwords
- elasticsearch-shard
- elasticsearch-syskeygen
- elasticsearch-users
- 优化
- 故障排除
- 修复常见的集群问题
- 诊断未分配的分片
- 向系统中添加丢失的层
- 允许 Elasticsearch 在系统中分配数据
- 允许 Elasticsearch 分配索引
- 索引将索引分配过滤器与数据层节点角色混合,以在数据层之间移动
- 没有足够的节点来分配所有分片副本
- 单个节点上索引的分片总数已超过
- 每个节点的分片总数已达到
- 故障排除损坏
- 修复磁盘空间不足的数据节点
- 修复磁盘空间不足的主节点
- 修复磁盘空间不足的其他角色节点
- 启动索引生命周期管理
- 启动快照生命周期管理
- 从快照恢复
- 故障排除损坏的存储库
- 解决重复的快照策略失败问题
- 故障排除不稳定的集群
- 故障排除发现
- 故障排除监控
- 故障排除转换
- 故障排除 Watcher
- 故障排除搜索
- 故障排除分片容量健康问题
- 故障排除不平衡的集群
- 捕获诊断信息
- REST API
- API 约定
- 通用选项
- REST API 兼容性
- 自动缩放 API
- 行为分析 API
- 紧凑和对齐文本 (CAT) API
- 集群 API
- 跨集群复制 API
- 连接器 API
- 数据流 API
- 文档 API
- 丰富 API
- EQL API
- ES|QL API
- 功能 API
- Fleet API
- 图表探索 API
- 索引 API
- 别名是否存在
- 别名
- 分析
- 分析索引磁盘使用量
- 清除缓存
- 克隆索引
- 关闭索引
- 创建索引
- 创建或更新别名
- 创建或更新组件模板
- 创建或更新索引模板
- 创建或更新索引模板(旧版)
- 删除组件模板
- 删除悬挂索引
- 删除别名
- 删除索引
- 删除索引模板
- 删除索引模板(旧版)
- 存在
- 字段使用情况统计信息
- 刷新
- 强制合并
- 获取别名
- 获取组件模板
- 获取字段映射
- 获取索引
- 获取索引设置
- 获取索引模板
- 获取索引模板(旧版)
- 获取映射
- 导入悬挂索引
- 索引恢复
- 索引段
- 索引分片存储
- 索引统计信息
- 索引模板是否存在(旧版)
- 列出悬挂索引
- 打开索引
- 刷新
- 解析索引
- 解析集群
- 翻转
- 收缩索引
- 模拟索引
- 模拟模板
- 拆分索引
- 解冻索引
- 更新索引设置
- 更新映射
- 索引生命周期管理 API
- 推理 API
- 信息 API
- 摄取 API
- 许可 API
- Logstash API
- 机器学习 API
- 机器学习异常检测 API
- 机器学习数据帧分析 API
- 机器学习训练模型 API
- 迁移 API
- 节点生命周期 API
- 查询规则 API
- 重新加载搜索分析器 API
- 存储库计量 API
- 汇总 API
- 根 API
- 脚本 API
- 搜索 API
- 搜索应用程序 API
- 可搜索快照 API
- 安全 API
- 身份验证
- 更改密码
- 清除缓存
- 清除角色缓存
- 清除权限缓存
- 清除 API 密钥缓存
- 清除服务帐户令牌缓存
- 创建 API 密钥
- 创建或更新应用程序权限
- 创建或更新角色映射
- 创建或更新角色
- 批量创建或更新角色 API
- 批量删除角色 API
- 创建或更新用户
- 创建服务帐户令牌
- 委托 PKI 身份验证
- 删除应用程序权限
- 删除角色映射
- 删除角色
- 删除服务帐户令牌
- 删除用户
- 禁用用户
- 启用用户
- 注册 Kibana
- 注册节点
- 获取 API 密钥信息
- 获取应用程序权限
- 获取内置权限
- 获取角色映射
- 获取角色
- 查询角色
- 获取服务帐户
- 获取服务帐户凭据
- 获取安全设置
- 获取令牌
- 获取用户权限
- 获取用户
- 授予 API 密钥
- 具有权限
- 使 API 密钥失效
- 使令牌失效
- OpenID Connect 准备身份验证
- OpenID Connect 身份验证
- OpenID Connect 注销
- 查询 API 密钥信息
- 查询用户
- 更新 API 密钥
- 更新安全设置
- 批量更新 API 密钥
- SAML 准备身份验证
- SAML 身份验证
- SAML 注销
- SAML 失效
- SAML 完成注销
- SAML 服务提供商元数据
- SSL 证书
- 激活用户配置文件
- 禁用用户配置文件
- 启用用户配置文件
- 获取用户配置文件
- 建议用户配置文件
- 更新用户配置文件数据
- 具有用户配置文件权限
- 创建跨集群 API 密钥
- 更新跨集群 API 密钥
- 快照和还原 API
- 快照生命周期管理 API
- SQL API
- 同义词 API
- 文本结构 API
- 转换 API
- 使用情况 API
- Watcher API
- 定义
- 迁移指南
- 发行说明
- Elasticsearch 版本 8.17.0
- Elasticsearch 版本 8.16.1
- Elasticsearch 版本 8.16.0
- Elasticsearch 版本 8.15.5
- Elasticsearch 版本 8.15.4
- Elasticsearch 版本 8.15.3
- Elasticsearch 版本 8.15.2
- Elasticsearch 版本 8.15.1
- Elasticsearch 版本 8.15.0
- Elasticsearch 版本 8.14.3
- Elasticsearch 版本 8.14.2
- Elasticsearch 版本 8.14.1
- Elasticsearch 版本 8.14.0
- Elasticsearch 版本 8.13.4
- Elasticsearch 版本 8.13.3
- Elasticsearch 版本 8.13.2
- Elasticsearch 版本 8.13.1
- Elasticsearch 版本 8.13.0
- Elasticsearch 版本 8.12.2
- Elasticsearch 版本 8.12.1
- Elasticsearch 版本 8.12.0
- Elasticsearch 版本 8.11.4
- Elasticsearch 版本 8.11.3
- Elasticsearch 版本 8.11.2
- Elasticsearch 版本 8.11.1
- Elasticsearch 版本 8.11.0
- Elasticsearch 版本 8.10.4
- Elasticsearch 版本 8.10.3
- Elasticsearch 版本 8.10.2
- Elasticsearch 版本 8.10.1
- Elasticsearch 版本 8.10.0
- Elasticsearch 版本 8.9.2
- Elasticsearch 版本 8.9.1
- Elasticsearch 版本 8.9.0
- Elasticsearch 版本 8.8.2
- Elasticsearch 版本 8.8.1
- Elasticsearch 版本 8.8.0
- Elasticsearch 版本 8.7.1
- Elasticsearch 版本 8.7.0
- Elasticsearch 版本 8.6.2
- Elasticsearch 版本 8.6.1
- Elasticsearch 版本 8.6.0
- Elasticsearch 版本 8.5.3
- Elasticsearch 版本 8.5.2
- Elasticsearch 版本 8.5.1
- Elasticsearch 版本 8.5.0
- Elasticsearch 版本 8.4.3
- Elasticsearch 版本 8.4.2
- Elasticsearch 版本 8.4.1
- Elasticsearch 版本 8.4.0
- Elasticsearch 版本 8.3.3
- Elasticsearch 版本 8.3.2
- Elasticsearch 版本 8.3.1
- Elasticsearch 版本 8.3.0
- Elasticsearch 版本 8.2.3
- Elasticsearch 版本 8.2.2
- Elasticsearch 版本 8.2.1
- Elasticsearch 版本 8.2.0
- Elasticsearch 版本 8.1.3
- Elasticsearch 版本 8.1.2
- Elasticsearch 版本 8.1.1
- Elasticsearch 版本 8.1.0
- Elasticsearch 版本 8.0.1
- Elasticsearch 版本 8.0.0
- Elasticsearch 版本 8.0.0-rc2
- Elasticsearch 版本 8.0.0-rc1
- Elasticsearch 版本 8.0.0-beta1
- Elasticsearch 版本 8.0.0-alpha2
- Elasticsearch 版本 8.0.0-alpha1
- 依赖项和版本
使用数据流
编辑使用数据流
编辑在您设置数据流之后,您可以执行以下操作
向数据流添加文档
编辑resp = client.index( index="my-data-stream", document={ "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }, ) print(resp)
response = client.index( index: 'my-data-stream', body: { "@timestamp": '2099-03-08T11:06:07.000Z', user: { id: '8a4f500d' }, message: 'Login successful' } ) puts response
const response = await client.index({ index: "my-data-stream", document: { "@timestamp": "2099-03-08T11:06:07.000Z", user: { id: "8a4f500d", }, message: "Login successful", }, }); console.log(response);
POST /my-data-stream/_doc/ { "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }
您不能使用索引 API 的 PUT /<target>/_doc/<_id>
请求格式向数据流添加新文档。要指定文档 ID,请改用 PUT /<target>/_create/<_id>
格式。仅支持 op_type
为 create
。
要通过单个请求添加多个文档,请使用批量 API。 仅支持 create
操作。
resp = client.bulk( index="my-data-stream", refresh=True, operations=[ { "create": {} }, { "@timestamp": "2099-03-08T11:04:05.000Z", "user": { "id": "vlb44hny" }, "message": "Login attempt failed" }, { "create": {} }, { "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }, { "create": {} }, { "@timestamp": "2099-03-09T11:07:08.000Z", "user": { "id": "l7gk7f82" }, "message": "Logout successful" } ], ) print(resp)
response = client.bulk( index: 'my-data-stream', refresh: true, body: [ { create: {} }, { "@timestamp": '2099-03-08T11:04:05.000Z', user: { id: 'vlb44hny' }, message: 'Login attempt failed' }, { create: {} }, { "@timestamp": '2099-03-08T11:06:07.000Z', user: { id: '8a4f500d' }, message: 'Login successful' }, { create: {} }, { "@timestamp": '2099-03-09T11:07:08.000Z', user: { id: 'l7gk7f82' }, message: 'Logout successful' } ] ) puts response
const response = await client.bulk({ index: "my-data-stream", refresh: "true", operations: [ { create: {}, }, { "@timestamp": "2099-03-08T11:04:05.000Z", user: { id: "vlb44hny", }, message: "Login attempt failed", }, { create: {}, }, { "@timestamp": "2099-03-08T11:06:07.000Z", user: { id: "8a4f500d", }, message: "Login successful", }, { create: {}, }, { "@timestamp": "2099-03-09T11:07:08.000Z", user: { id: "l7gk7f82", }, message: "Logout successful", }, ], }); console.log(response);
PUT /my-data-stream/_bulk?refresh {"create":{ }} { "@timestamp": "2099-03-08T11:04:05.000Z", "user": { "id": "vlb44hny" }, "message": "Login attempt failed" } {"create":{ }} { "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" } {"create":{ }} { "@timestamp": "2099-03-09T11:07:08.000Z", "user": { "id": "l7gk7f82" }, "message": "Logout successful" }
搜索数据流
编辑以下搜索 API 支持数据流
获取数据流的统计信息
编辑使用数据流统计 API来获取一个或多个数据流的统计信息
resp = client.indices.data_streams_stats( name="my-data-stream", human=True, ) print(resp)
response = client.indices.data_streams_stats( name: 'my-data-stream', human: true ) puts response
const response = await client.indices.dataStreamsStats({ name: "my-data-stream", human: "true", }); console.log(response);
GET /_data_stream/my-data-stream/_stats?human=true
手动滚动更新数据流
编辑使用滚动更新 API手动滚动更新数据流。 手动滚动更新时,您有两个选择
-
立即触发滚动更新
resp = client.indices.rollover( alias="my-data-stream", ) print(resp)
response = client.indices.rollover( alias: 'my-data-stream' ) puts response
const response = await client.indices.rollover({ alias: "my-data-stream", }); console.log(response);
POST /my-data-stream/_rollover/
-
或者推迟滚动更新,直到下一个索引事件发生
resp = client.indices.rollover( alias="my-data-stream", lazy=True, ) print(resp)
response = client.indices.rollover( alias: 'my-data-stream', lazy: true ) puts response
const response = await client.indices.rollover({ alias: "my-data-stream", lazy: "true", }); console.log(response);
POST /my-data-stream/_rollover?lazy
使用第二个选项可以避免在不经常更新的数据流中出现空的后备索引。
打开已关闭的后备索引
编辑您无法搜索已关闭的后备索引,即使通过搜索其数据流也不行。您也无法更新或删除已关闭索引中的文档。
要重新打开已关闭的后备索引,请直接向该索引提交一个打开索引 API 请求
resp = client.indices.open( index=".ds-my-data-stream-2099.03.07-000001", ) print(resp)
response = client.indices.open( index: '.ds-my-data-stream-2099.03.07-000001' ) puts response
const response = await client.indices.open({ index: ".ds-my-data-stream-2099.03.07-000001", }); console.log(response);
POST /.ds-my-data-stream-2099.03.07-000001/_open/
要重新打开数据流的所有已关闭后备索引,请向该流提交一个打开索引 API 请求
resp = client.indices.open( index="my-data-stream", ) print(resp)
response = client.indices.open( index: 'my-data-stream' ) puts response
const response = await client.indices.open({ index: "my-data-stream", }); console.log(response);
POST /my-data-stream/_open/
使用数据流重新索引
编辑使用重新索引 API将文档从现有索引、别名或数据流复制到数据流。由于数据流是仅追加的,因此重新索引到数据流必须使用 op_type
为 create
。重新索引无法更新数据流中的现有文档。
resp = client.reindex( source={ "index": "archive" }, dest={ "index": "my-data-stream", "op_type": "create" }, ) print(resp)
response = client.reindex( body: { source: { index: 'archive' }, dest: { index: 'my-data-stream', op_type: 'create' } } ) puts response
const response = await client.reindex({ source: { index: "archive", }, dest: { index: "my-data-stream", op_type: "create", }, }); console.log(response);
POST /_reindex { "source": { "index": "archive" }, "dest": { "index": "my-data-stream", "op_type": "create" } }
通过查询更新数据流中的文档
编辑使用按查询更新 API来更新数据流中与提供的查询匹配的文档
resp = client.update_by_query( index="my-data-stream", query={ "match": { "user.id": "l7gk7f82" } }, script={ "source": "ctx._source.user.id = params.new_id", "params": { "new_id": "XgdX0NoX" } }, ) print(resp)
response = client.update_by_query( index: 'my-data-stream', body: { query: { match: { 'user.id' => 'l7gk7f82' } }, script: { source: 'ctx._source.user.id = params.new_id', params: { new_id: 'XgdX0NoX' } } } ) puts response
const response = await client.updateByQuery({ index: "my-data-stream", query: { match: { "user.id": "l7gk7f82", }, }, script: { source: "ctx._source.user.id = params.new_id", params: { new_id: "XgdX0NoX", }, }, }); console.log(response);
POST /my-data-stream/_update_by_query { "query": { "match": { "user.id": "l7gk7f82" } }, "script": { "source": "ctx._source.user.id = params.new_id", "params": { "new_id": "XgdX0NoX" } } }
通过查询删除数据流中的文档
编辑使用按查询删除 API来删除数据流中与提供的查询匹配的文档
resp = client.delete_by_query( index="my-data-stream", query={ "match": { "user.id": "vlb44hny" } }, ) print(resp)
response = client.delete_by_query( index: 'my-data-stream', body: { query: { match: { 'user.id' => 'vlb44hny' } } } ) puts response
const response = await client.deleteByQuery({ index: "my-data-stream", query: { match: { "user.id": "vlb44hny", }, }, }); console.log(response);
POST /my-data-stream/_delete_by_query { "query": { "match": { "user.id": "vlb44hny" } } }
更新或删除后备索引中的文档
编辑如果需要,您可以通过将请求发送到包含文档的后备索引来更新或删除数据流中的文档。您需要
要获取此信息,请使用搜索请求
resp = client.search( index="my-data-stream", seq_no_primary_term=True, query={ "match": { "user.id": "yWIumJd7" } }, ) print(resp)
response = client.search( index: 'my-data-stream', body: { seq_no_primary_term: true, query: { match: { 'user.id' => 'yWIumJd7' } } } ) puts response
const response = await client.search({ index: "my-data-stream", seq_no_primary_term: true, query: { match: { "user.id": "yWIumJd7", }, }, }); console.log(response);
GET /my-data-stream/_search { "seq_no_primary_term": true, "query": { "match": { "user.id": "yWIumJd7" } } }
响应
{ "took": 20, "timed_out": false, "_shards": { "total": 3, "successful": 3, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 0.2876821, "hits": [ { "_index": ".ds-my-data-stream-2099.03.08-000003", "_id": "bfspvnIBr7VVZlfp2lqX", "_seq_no": 0, "_primary_term": 1, "_score": 0.2876821, "_source": { "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "yWIumJd7" }, "message": "Login successful" } } ] } }
要更新文档,请使用具有有效 if_seq_no
和 if_primary_term
参数的索引 API 请求
resp = client.index( index=".ds-my-data-stream-2099-03-08-000003", id="bfspvnIBr7VVZlfp2lqX", if_seq_no="0", if_primary_term="1", document={ "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }, ) print(resp)
const response = await client.index({ index: ".ds-my-data-stream-2099-03-08-000003", id: "bfspvnIBr7VVZlfp2lqX", if_seq_no: 0, if_primary_term: 1, document: { "@timestamp": "2099-03-08T11:06:07.000Z", user: { id: "8a4f500d", }, message: "Login successful", }, }); console.log(response);
PUT /.ds-my-data-stream-2099-03-08-000003/_doc/bfspvnIBr7VVZlfp2lqX?if_seq_no=0&if_primary_term=1 { "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }
要删除文档,请使用删除 API
resp = client.delete( index=".ds-my-data-stream-2099.03.08-000003", id="bfspvnIBr7VVZlfp2lqX", ) print(resp)
response = client.delete( index: '.ds-my-data-stream-2099.03.08-000003', id: 'bfspvnIBr7VVZlfp2lqX' ) puts response
const response = await client.delete({ index: ".ds-my-data-stream-2099.03.08-000003", id: "bfspvnIBr7VVZlfp2lqX", }); console.log(response);
DELETE /.ds-my-data-stream-2099.03.08-000003/_doc/bfspvnIBr7VVZlfp2lqX
要通过单个请求删除或更新多个文档,请使用批量 API 的 delete
、index
和 update
操作。对于 index
操作,请包含有效的if_seq_no
和 if_primary_term
参数。
resp = client.bulk( refresh=True, operations=[ { "index": { "_index": ".ds-my-data-stream-2099.03.08-000003", "_id": "bfspvnIBr7VVZlfp2lqX", "if_seq_no": 0, "if_primary_term": 1 } }, { "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" } ], ) print(resp)
response = client.bulk( refresh: true, body: [ { index: { _index: '.ds-my-data-stream-2099.03.08-000003', _id: 'bfspvnIBr7VVZlfp2lqX', if_seq_no: 0, if_primary_term: 1 } }, { "@timestamp": '2099-03-08T11:06:07.000Z', user: { id: '8a4f500d' }, message: 'Login successful' } ] ) puts response
const response = await client.bulk({ refresh: "true", operations: [ { index: { _index: ".ds-my-data-stream-2099.03.08-000003", _id: "bfspvnIBr7VVZlfp2lqX", if_seq_no: 0, if_primary_term: 1, }, }, { "@timestamp": "2099-03-08T11:06:07.000Z", user: { id: "8a4f500d", }, message: "Login successful", }, ], }); console.log(response);
PUT /_bulk?refresh { "index": { "_index": ".ds-my-data-stream-2099.03.08-000003", "_id": "bfspvnIBr7VVZlfp2lqX", "if_seq_no": 0, "if_primary_term": 1 } } { "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }
On this page