我正在嘗試使用反應按鈕 onClick 實作 Elasticsearch update_by_query。當我單擊反應按鈕時,它應該將 Elasticsearch 檔案布爾欄位 isCancelRun 設定為 true(索引名稱為:運行)
我想將下一個查詢添加為將使用按鈕 onClick 執行的反應函式:
curl -X POST "http://elasticsearch_ip_addr:9200/run-*/_update_by_query?pretty" -H "Content-Type: application/json" -d'
{
"script": {
"source": "ctx._source.isCancelRun = true;",
"lang": "painless"
},
"query": {
"term": {
"runId": "20220419142721270"
}
}
}
'
我實作了單擊按鈕時應呼叫的下一個函式:
export function cancelRunExecution(runIdToCancel) {
fetch(`${ElasticSearch_BaseAddress}${"run-*"}/_update_by_query?pretty`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body:
`{"query":{"bool":{"must":[{"match":{"runId":"${runIdToCancel}"}}]}}},
script: {
source: "ctx._source.isCancelRun = true;",
lang: "painless"
}`
})
.then(response => {
if (!response.ok) {
return Promise.reject(response.statusText);
}
return response.json();
});
}
ElasticSearch_BaseAddress = elasticsearch_ip_addr:9200/
帶有 onClick 的按鈕實作應該執行 cancelRunExecution 函式:
<div>
<button id="cancelRun" onClick={() => {
cancelRunExecution(props.run.runId);
var btn = document.getElementById("cancelRun");
btn.innerHTML = 'Run execution - canceled';
}}>
Cancel Run Execution
</button>
</div>
問題:它不會將布爾欄位 isCancelRun 更改為 true。
uj5u.com熱心網友回復:
您發送的不是 JSON,因為script,source并且lang沒有雙引號。
改為發送此有效負載:
body:
`{"query":{"bool":{"must":[{"match":{"runId":"${runIdToCancel}"}}]}}},
"script": {
"source": "ctx._source.isCancelRun = true;",
"lang": "painless"
}`
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/467160.html
