update elastic docs

This commit is contained in:
2022-12-02 14:26:43 +08:00
parent d84c1e7a2b
commit c8ac48764f
2 changed files with 32 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
## 前言
在 Elasticsearch 中文档是**不可改变**的,不能修改它们。如果想要更新现有的文档,需要重建索引或者进行替换,我们可以使用相同的 index API 进行实现。
```
PUT /website/blog/123
{
"title": "My first blog entry",
"text": "I am starting to get the hang of this...",
"date": "2014/01/02"
}
```
在内部Elasticsearch已将旧文档标记为已删除并增加一个全新的文档。 尽管你不能再对旧版本的文档进行访问,但它并不会立即消失。
当继续索引更多的数据Elasticsearch会在后台清理这些已删除文档。
它似乎对文档直接进行了修改但实际上Elasticsearch按前述完全相同方式执行以下过程
- 从旧文档构建JSON
- 更改该JSON
- 删除旧文档
- 索引一个新文档
唯一的区别在于, update API 仅仅通过一个客户端请求来实现这些步骤,而不需要单独的 get 和 index 请求。

View File

@@ -5,10 +5,15 @@ Elasticsearch集群允许系统存储的数据量超过单机容量实现这
在一个索引index中数据document被分片处理sharding到多个分片上。Elasticsearch屏蔽了管理分片的复杂性使得多个分片呈现出一个大索引的样子。 在一个索引index中数据document被分片处理sharding到多个分片上。Elasticsearch屏蔽了管理分片的复杂性使得多个分片呈现出一个大索引的样子。
有点类似于数据库的分库分表,将一个索引里的数据分到不同的分片中。 有点类似于数据库的分库分表,将一个索引里的数据分到不同的分片中。
在写入过程中,通过相应的路由手段(默认规则是分片编号=hash(_id)%总分片数)写入相应的分片。 在写入过程中,通过相应的路由手段(默认规则是分片编号=hash(_id)%总分片数)写入相应的分片。
在进行写入数据的时候,会通过路由来确定具体写到哪个分片上,所以在创建索引的时候就要确定好分片数量,并且一旦确定不可更改。
索引数据在经过分片后在数据管理和性能上都有很大提升并且每一个分片都是一个Lucende的索引每个分片都必须有一个主分片和零到多个副分片。
在查询过程中,会分别查询所有分片并将结果汇总得到最终查询结果,这样就可以将非常大量的索引数据分散到不同的分片中,由于每个分片的查询都使用一个线程,这样可以有效地减小单次查询的时延。 在查询过程中,会分别查询所有分片并将结果汇总得到最终查询结果,这样就可以将非常大量的索引数据分散到不同的分片中,由于每个分片的查询都使用一个线程,这样可以有效地减小单次查询的时延。
## 副本replica ## 副本replica