Elasticsearch - Ingest 節點



index.blocks.read_only 1 true/false 設定為 true 可使索引和索引元資料只讀,設定為 false 可允許寫入和元資料更改。

有時我們需要在索引文件之前對其進行轉換。例如,我們希望從文件中刪除欄位或重新命名欄位,然後對其進行索引。這由 Ingest 節點處理。

叢集中的每個節點都具有攝取能力,但也可以自定義為僅由特定節點處理。

涉及的步驟

Ingest 節點的執行涉及兩個步驟:

  • 建立管道
  • 建立文件

建立管道

首先建立一個包含處理器的管道,然後執行該管道,如下所示:

PUT _ingest/pipeline/int-converter
{
   "description": "converts the content of the seq field to an integer",
   "processors" : [
      {
         "convert" : {
            "field" : "seq",
            "type": "integer"
         }
      }
   ]
}

執行上述程式碼後,我們將得到以下結果:

{
   "acknowledged" : true
}

建立文件

接下來,我們使用管道轉換器建立一個文件。

PUT /logs/_doc/1?pipeline=int-converter
{
   "seq":"21",
   "name":"Tutorialspoint",
   "Addrs":"Hyderabad"
}

執行上述程式碼後,我們將得到如下所示的響應:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

接下來,我們使用 GET 命令搜尋上面建立的文件,如下所示:

GET /logs/_doc/1

執行上述程式碼後,我們將得到以下結果:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "_seq_no" : 0,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "Addrs" : "Hyderabad",
      "name" : "Tutorialspoint",
      "seq" : 21
   }
}

您可以看到上面 21 已經變成了整數。

無管道

現在我們建立一個不使用管道的文件。

PUT /logs/_doc/2
{
   "seq":"11",
   "name":"Tutorix",
   "Addrs":"Secunderabad"
}
GET /logs/_doc/2

執行上述程式碼後,我們將得到以下結果:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "2",
   "_version" : 1,
   "_seq_no" : 1,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "seq" : "11",
      "name" : "Tutorix",
      "Addrs" : "Secunderabad"
   }
}

您可以看到上面 11 是一個字串,沒有使用管道。

廣告
© . All rights reserved.