Elasticsearch 权威指南
  • Elasticsearch 权威指南
  • 入门
    • 初识
    • 安装
    • API
    • 文档
    • 索引
    • 搜索
    • 汇总
    • 小结
    • 分布式
    • 本章总结
  • 分布式集群
    • 空集群
    • 集群健康
    • 添加索引
    • 容错移转
    • 横向扩展
    • 扩展
    • 故障恢复
  • 数据
    • 文档
    • 索引
    • Get
    • 存在
    • 更新
    • 创建
    • 删除
    • 版本控制
    • 局部更新
    • Mget
    • Bulk
    • 总结
  • 分布式文档存储
    • 路由
    • 主从互通
    • 创建索引删除
    • 获取
    • 局部更新
    • 批量请求
    • 批量格式
  • 搜索
    • 空白搜索
    • 多索引多类型
    • 分页
    • 查询语句
  • 映射与统计
    • Exact_vs_full_text
    • Inverted_index
    • Analysis
    • Mapping
    • Complex_datatypes
Powered by GitBook
On this page
  • 使用自己的ID
  • 自增ID

Was this helpful?

  1. 数据

索引

文档通过索引API被索引——存储并使其可搜索。但是最开始我们需要决定我们将文档存储在哪里。正如之前提到的,一篇文档通过_index, _type以及_id来确定它的唯一性。我们可以自己提供一个_id,或者也使用indexAPI 帮我们生成一个。

使用自己的ID

如果你的文档拥有天然的标示符(例如user_account字段或者文档中其他的标识值),这时你就可以提供你自己的_id,这样使用indexAPI:

PUT /{index}/{type}/{id}
{
  "field": "value",
  ...
}

几个例子。如果我们的索引叫做"website",我们的类型叫做 "blog",然后我们选择"123"作为ID的编号。这时,请求就是这样的:

PUT /website/blog/123
{
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2014/01/01"
}

Elasticsearch返回内容:

{
   "_index":    "website",
   "_type":     "blog",
   "_id":       "123",
   "_version":  1,
   "created":   true
}

这个返回值意味着我们的索引请求已经被成功创建,其中还包含了_index, _type以及_id的元数据,以及一个新的元素_version。

在Elasticsearch中,每一个文档都有一个版本号码。每当文档产生变化时(包括删除),_version就会增大。在《版本控制》中,我们将会详细讲解如何使用_version的数字来确认你的程序不会随意替换掉不想覆盖的数据。

自增ID

如果我们的数据中没有天然的标示符,我们可以让Elasticsearch为我们自动生成一个。请求的结构发生了变化:我们把PUT——“把文档存储在这个地址中”变量变成了POST——“把文档存储在这个地址下”。

这样一来,请求中就只包含 _index和_type了:

POST /website/blog/
{
  "title": "My second blog entry",
  "text":  "Still trying this out...",
  "date":  "2014/01/01"
}

这次的反馈和之前基本一样,只有_id改成了系统生成的自增值:

{
   "_index":    "website",
   "_type":     "blog",
   "_id":       "wM0OSFhDQXGZAWDf0-drSA",
   "_version":  1,
   "created":   true
}
Previous文档NextGet

Last updated 5 years ago

Was this helpful?

自生成ID是由22个字母组成的,安全 universally unique identifiers 或者被称为。

UUIDs