gpt4 book ai didi

elasticsearch - Elasticsearch的批量API是否可以确保将文档按顺序写入es?

转载 作者:行者123 更新时间:2023-12-03 02:13:31 28 4
gpt4 key购买 nike

我已经检查了official doc和doc syas:

The bulk API’s response contains the individual results of each operation in the request, returned in the order submitted. The success or failure of an individual operation does not affect other operations in the request.


官方文档没有告诉文档是否具有相同的主键“_id”,是否按顺序将其写入了Elasticsearch。
这里有一个例子。我有3个文档,其pk ID = 1相同,其他字段不同。我为这3个文档创建了3个UpdateRequest。我将这些文档按顺序添加到BulkRequest中。提交给es客户端后,是否可以确保这些文档按照将它们添加到批量请求中的顺序在es中执行?
// Three docs with same id but different non-pk field value 
Map<String,String> doc1 = new HashMap;
doc1.put("_id","1");
doc1.put("other_column","columnValue1");

Map<String,String> doc2 = new HashMap;
doc1.put("_id","1");
doc1.put("other_column","columnValue2");

Map<String,String> doc3 = new HashMap;
doc1.put("_id","1");
doc1.put("other_column","columnValue3");


//prepare 3 update Request
UpdateRequest updateRequest1 = new UpdateRequest(index,type,"1").docAsUpsert(true).setDoc(doc1);
UpdateRequest updateRequest2 = new UpdateRequest(index,type,"1").docAsUpsert(true).setDoc(doc2);
UpdateRequest updateRequest3 = new UpdateRequest(index,type,"1").docAsUpsert(true).setDoc(doc3);



//add the to bulk request
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.add(indexRequest1);
bulkRequest.add(indexRequest2);
bulkRequest.add(indexRequest3);

//execute by client
restHighLevelClient.bulk(bulkRequest);

//if doc2 write into elasticsearch failed, doc1 and doc2 may also be executed successfully as the official doc said. Is it right?



但是,文档说单个操作的成功或失败不会影响请求中的其他操作。在我的情况下,如果es请求中具有相同pk的文档中有一部分失败文档,而其他文档则成功写入es。显然,这意味着它们没有按顺序写入es。 ES客户端批量API无法确保文档按顺序写入es的结论正确吗?

最佳答案

如果仅使用大容量处理器插入记录,则在刷新过程中,将根据时间戳以有序方式刷新记录。因此,该文档将使用特定文档ID的最新数据进行更新。假设您先为文档建立索引然后将其删除。
因此最终结果将是doc被删除。
但是,如果除了散装以外还有其他正常索引,并且使用散装索引API和常规索引api索引相同的ID,则不会维持排序。由于冲洗可能在不同的时间发生。
假设您使用批量索引为ID为1的文档编制了索引,然后使用常规索引API删除了ID为1的文档。如果将批量刷新间隔设置为5秒,则可能会发生已删除索引保留在es中的索引的情况。

关于elasticsearch - Elasticsearch的批量API是否可以确保将文档按顺序写入es?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64102052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com