主页 > 人工智能  > 

往es中写入一条数据的,请求流程

往es中写入一条数据的,请求流程

往 Elasticsearch(ES) 中写入一条数据的请求流程涉及多个步骤,包括客户端请求、节点处理、数据分片和副本同步等。以下是详细的流程解析。


1. 写入数据的请求流程 1.1 客户端发送请求

客户端(如 Kibana、Logstash 或自定义应用)向 Elasticsearch 集群发送写入请求。

请求格式通常为 HTTP PUT 或 POST 请求,例如:

bash

复制

PUT /my_index/_doc/1 { "field1": "value1", "field2": "value2" } 1.2 请求到达协调节点

Elasticsearch 集群中的任意节点都可以接收请求,接收请求的节点称为 协调节点(Coordinating Node)。

协调节点负责处理请求的路由和转发。

1.3 确定主分片

协调节点根据文档的 _id 和索引的分片规则,计算出文档应该写入的 主分片(Primary Shard)。

计算公式:

bash

复制

shard = hash(_id) % number_of_primary_shards 1.4 转发请求到主分片

协调节点将写入请求转发到目标主分片所在的 数据节点(Data Node)。

1.5 主分片写入数据

主分片所在的节点接收到请求后,将数据写入本地存储(如 Lucene 索引)。

写入成功后,主分片会将数据同步到所有的 副本分片(Replica Shard)。

1.6 副本分片同步数据

主分片将数据同步到副本分片所在的节点。

副本分片写入成功后,向主分片发送确认。

1.7 主分片返回响应

主分片收到所有副本分片的确认后,向协调节点返回写入成功的响应。

1.8 协调节点返回客户端

协调节点将写入成功的响应返回给客户端。


2. 写入流程的详细步骤

以下是写入流程的详细步骤图示:

复制

客户端 -> 协调节点 -> 主分片 -> 副本分片 -> 主分片 -> 协调节点 -> 客户端

客户端发送请求:

客户端向 Elasticsearch 集群发送写入请求。

协调节点接收请求:

协调节点接收请求并确定目标主分片。

主分片写入数据:

主分片所在的节点写入数据。

副本分片同步数据:

主分片将数据同步到副本分片。

主分片返回响应:

主分片收到所有副本分片的确认后,返回响应。

协调节点返回客户端:

协调节点将响应返回给客户端。


3. 写入流程的关键点 3.1 分片路由

Elasticsearch 使用分片路由算法确定文档应该写入哪个主分片。

默认情况下,使用文档的 _id 进行哈希计算。

3.2 数据一致性

Elasticsearch 提供了多种数据一致性级别:

quorum:大多数副本分片写入成功(默认)。

all:所有副本分片写入成功。

one:主分片写入成功。

3.3 写入确认

客户端可以通过 refresh 参数控制写入后的刷新行为:

refresh=true:立即刷新索引,使写入的数据可搜索。

refresh=wait_for:等待刷新完成后再返回响应。

refresh=false:不刷新索引,数据稍后可搜索。


4. 写入流程的示例

以下是一个写入数据的示例:

4.1 客户端请求

bash

复制

PUT /my_index/_doc/1 { "field1": "value1", "field2": "value2" } 4.2 协调节点处理

协调节点计算目标主分片,假设为 shard 0。

4.3 主分片写入

主分片 shard 0 所在的节点写入数据。

4.4 副本分片同步

主分片将数据同步到副本分片 shard 0 所在的节点。

4.5 返回响应

主分片收到所有副本分片的确认后,返回响应:

json

复制

{ "_index": "my_index", "_type": "_doc", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 }
5. 总结

往 Elasticsearch 中写入数据的流程涉及客户端请求、协调节点路由、主分片写入和副本分片同步。

通过合理配置分片、副本和数据一致性级别,可以优化写入性能和数据可靠性。

理解写入流程的关键点,有助于排查和解决写入问题。

通过以上内容,可以轻松掌握 Elasticsearch 写入数据的请求流程!

开启新对话

标签:

往es中写入一条数据的,请求流程由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“往es中写入一条数据的,请求流程