جلوگیری از بروزرسانی داکیومنت موجود در زمان ایندکس کردن در OpenSearch

mohsen3 هفته قبل
ارسال شده در
mohsen

در OpenSearch اگر بخواهیم در زمان ایندکس کردن داکیومنت ها از بروزرسانی داکیومنت های موجود جلوگیری کرده و فقط داکیومنت های ناموجود را ایجاد کنیم باید از عملیات create با جای index استفاده کنیم. با این کار در صورتی که داکیومنتی با شناسه یکسان وجود داشته باشد، OpenSearch خطای با وضعیت 409 را با عنوان Version Conflict بر می گرداند. برای این کار می توانیم از روش زیر استفاده کنیم:

      PUT /my-index/_doc/123?op_type=create
{
  "title": "New Document"
}
    

یا

      POST /my-index/_create/123
{
  "title": "New Document"
}

    

در عملیات دسته جمعی نیز می توانیم به روش زیر عمل کنیم:

      { "create": { "_index": "my-index", "_id": "123" } }
{ "title": "New Document" }

    

در سی شارپ می توانیم این کار را به صورت زیر انجام دهیم:

      var bulkRequest = new BulkRequest("items")
{
    Operations = new BulkOperationsCollection<IBulkOperation>()
};
foreach (var item in items)
{
    bulkRequest.Operations.Add(new BulkCreateOperation<MyItem>(item)
    {
        Id = item.Id.ToString()
    });
}
var manyReponse = await _client.BulkAsync(bulkRequest);
    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!