昨天我們講了DataStream的建立過程,以及實際操作。另外也透過輸入document,來驗證DataStream的流程。今天我們進一步來講解DataStream中,如何改變設定,以及使用和修改DataStream中的資料。
昨天提到DataStream是Append Only,若今天我們想要複製一份新的index,可以透過以下幾種指令。
POST /_reindex
{
"source": {
"index": "archive"
},
"dest": {
"index": "my-data-stream",
"op_type": "create"
}
}
第一種是將archive的document,reindex到my-data-stream,而因為my-data-stream是一個data-stream,因此op_type只能create
另外就是若你希望將目前data stream的資料去進行其他利用,也可以把data stream中的指令reindex出來
POST /_reindex
{
"source": {
"index": "my-data-stream"
},
"dest": {
"index": "archive"
}
}
如此一來 my-data-stream的資料就會被reindex到archive這個index。
而剛剛講到,data stream本身是append only,但我們仍然可以透過query去進行更新以及刪除,具體操作如下
POST /my-data-stream/_update_by_query
{
"query": {
"match": {
"user.id": "l7gk7f82"
}
},
"script": {
"source": "ctx._source.user.id = params.new_id",
"params": {
"new_id": "XgdX0NoX"
}
}
}
這個操作就能將my-data-stream中 match到user.id的這些document,將user.id改成新的new_id值
刪除也可以如此操作
POST /my-data-stream/_delete_by_query
{
"query": {
"match": {
"user.id": "vlb44hny"
}
}
}
另外除了直接針對my-data-stream這樣的data stream去進行更新或刪除,你也可以找到它背後backup indices並進行刪除或更新的指令
透過_search? match回來的document,會註明他的backup indices是哪個,再針對這個index進行操作,就能刪除或更新資料了!