برای بروزرسانی اسناد در OpenSearch بوسیله کوئری می توانیم از دستورات زیر استفاده کنیم:
POST /your-index-name/_update_by_query
{
"script": {
"source": "ctx._source['Id'] = (long)ctx._source['Id']",
"lang": "painless"
},
"query": {
"match_all": {} // بروزرسانی همه اسناد
}
}
در این مثال دیتای فیلد Id سند را به نوع Long تبدیل کرده ایم.
بروزرسانی شرطی
برای بروزرسانی شرطی می توانیم از دستور زیر استفاده کنیم. در این دستور اگر شناسه کمتر از 100 بود داکیومنت ها بروزرسانی می شوند:
POST /your-index-name/_update_by_query
{
"script": {
"source": "ctx._source['Id'] = (long)ctx._source['Id']",
"lang": "painless"
},
"query": {
"range": {
"Id": {
"lt": 100
}
}
}
}
بروزرسانی چند فیلد با یک دستور
برای بروزرسانی چند فیلد با یک دستور می توانیم از دستور زیر استفاده کنیم. در این دستور هم شناسه بروزرسانی می شود و هم قیمت در عدد مورد نظر ضرب می شود:
POST /your-index-name/_update_by_query
{
"script": {
"source": """
ctx._source['Id'] = (long)ctx._source['Id'];
ctx._source['price'] = ctx._source['price'] * 1.1;
""",
"lang": "painless"
},
"query": {
"range": {
"Id": {
"lt": 100
}
}
}
}
اگر اندیس شما دارای تعداد زیادی رکورد است و زمان زیادی برای بروزرسانی آن نیاز است می توانید از طریق دستور زیر میزان پیشرفت دستور داده شده را مشاهده کنید:
POST /_tasks?detailed=true&actions=*
با اجرای این دستور خروجی به شما نمایش داده می شود که بخش مربوط به اجرای کوئری شما به صورت زیر خواهد بود:
{
"node": "8APcfEp6SLOasPLwl0dqGQ",
"id": 702656,
"type": "transport",
"action": "indices:data/write/update/byquery",
"status": {
"total": 99786796,
"updated": 17356000,
"created": 0,
"deleted": 0,
"batches": 17357,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1.0,
"throttled_until_millis": 0
},
"description": "update-by-query [alarms_fid] updated with Script{type=inline, lang='painless', idOrCode='ctx._source['id'] = (long)ctx._source['id']', options={}, params={}}",
"start_time_in_millis": 1737276955535,
"running_time_in_nanos": 676285520600,
"cancellable": true,
"cancelled": false,
"headers": {},
"resource_stats": {
"average": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"total": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"min": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"max": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"thread_info": {
"thread_executions": 0,
"active_threads": 0
}
}
}
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!