修改彈性搜尋資料

Elasticsearch 幾乎可以實時提供資料處理和資料搜尋功能。在這個例子中,我們有更新,刪除和批處理操作。

  • 更新同一文件。假設我們已經在/ car / external / 1 上索引了一個文件。然後執行用於索引資料的命令將替換先前的文件。
PUT /car/external/1?pretty
{
  "name": "Tata Nexa"
}

之前名為 Tata Nexon 的 id 1 的汽車檔案將更新為新名稱 Tata Nexa

  • 使用顯式 Id 索引資料
POST /car/external?pretty
{
  "name": "Jane Doe"
}

為了在沒有 Id 的情況下索引文件,我們使用 POST 動詞而不是 PUT 動詞。如果我們不提供 Id,elasticsearch 將生成一個隨機 ID,然後使用它來索引文件。

  • 部分更新 Id 上的先前文件。
POST /car/external/1/_update?pretty
{
  "doc": { "name": "Tata Nex" }
}
  • 使用其他資訊更新文件
POST /car/external/1/_update?pretty
{
  "doc": { "name": "Tata Nexon", "price": 1000000 }
}
  • 使用簡單指令碼更新文件。
POST /car/external/1/_update?pretty
{
  "script" : "ctx._source.price += 50000"
}

ctx._source 指的是即將更新的當前源文件。上面的指令碼只提供了一個要同時更新的指令碼。

  • 刪除文件
DELETE /car/external/1?pretty

注意:刪除整個索引比使用 Delete by Query API 刪除所有文件更有效

批量處理

除了索引更新和刪除文件之外,elasticsearch 還提供了使用 _bulk API 批量執行上述任何操作的功能。

  • 使用 _bulk API 更新多個文件
POST /car/external/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "Tata Nexon" }
{"index":{"_id":"2"}}
{"name": "Tata Nano" }
  • 使用 _bulk API 更新和刪除文件
POST /car/external/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "Tata Nano" } }
{"delete":{"_id":"2"}}

如果操作失敗,批量 API 不會停止。它執行所有操作並最終返回所有操作的報告。