elasticsearch权威指南笔记3 - 文档

Posted ArcheWong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch权威指南笔记3 - 文档相关的知识,希望对你有一定的参考价值。

在 Elasticsearch 中,术语 文档 有着特定的含义。它是指最顶层或者根对象, 这个根对象被序列化成 JSON 并存储到 Elasticsearch 中,指定了唯一 ID。

1. 介绍

一个文档除了自身数据外,还包括元数据(有关文档的信息)

三个必须的元数据元素如下:

  • _index 文档在哪存放
  • _type 文档表示的对象类别
  • _id 文档唯一标识
  1. 索引

索引名必须小写,不能以下划线开头,不能包含逗号

实际上,在 Elasticsearch 中,我们的数据是被存储和索引在分片中,而一个索引仅仅是逻辑上的命名空间, 这个命名空间由一个或者多个分片组合在一起。 然而,这是一个内部细节,我们的应用程序根本不应该关心分片,对于应用程序而言,只需知道文档位于一个 索引 内。 Elasticsearch 会处理所有的细节,当然这很有意思,有兴趣可以读下相关章节-集群原理

  1. 类别

数据可能在索引中只是松散的组合在一起,但是通常明确定义一些数据中的子分区是很有用的,在索引中对数据进行逻辑分区,这将更加清晰。

一个 _type 命名可以是大写或者小写,但是不能以下划线或者句号开头,不应该包含逗号, 并且长度限制为256个字符.

  1. id

ID 是一个字符串, 当它和 _index 以及 _type 组合就可以唯一确定 Elasticsearch 中的一个文档。 当你创建一个新的文档,要么提供自己的 _id ,要么让 Elasticsearch 帮你生成。

  1. 其他一些元数据

2. 索引文档

索引文档 - 是文档存储起来并且可以被搜索
1.使用自定义的id

使用put方式,并自己提供id

类似于下面的格式

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

请求

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

响应

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

在 Elasticsearch 中每个文档都有一个版本号。当每次对文档进行修改时(包括删除), _version 的值会递增。

  1. 自动生成id

使用post方式

POST /website/blog/
{
  "title": "My second blog entry",
  "text":  "Still trying this out...",
  "date":  "2014/01/01"
}
{
   "_index":    "website",
   "_type":     "blog",
   "_id":       "AVFgSgVHUP18jI2wRx0w",
   "_version":  1,
   "created":   true
}

自动生成的 ID 是 URL-safe、 基于 Base64 编码且长度为20个字符的 GUID 字符串。 这些 GUID 字符串由可修改的 FlakeID 模式生成,这种模式允许多个节点并行生成唯一 ID ,且互相之间的冲突概率几乎为零。

以上是关于elasticsearch权威指南笔记3 - 文档的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch权威指南笔记2 - 简单使用

elasticsearch权威指南笔记1 - 安装运行

小烨收藏ElasticSearch权威指南-搜索

小烨收藏ElasticSearch权威指南-分布式文档存储

js-权威指南学习笔记14

js-权威指南学习笔记15