Elasticsearch - IngestNode

index.blocks.read_only 1 จริง / เท็จ ตั้งค่าเป็น true เพื่อให้ข้อมูลเมตาของดัชนีและดัชนีเป็นแบบอ่านอย่างเดียวเป็นเท็จเพื่ออนุญาตให้เขียนและเปลี่ยนแปลงข้อมูลเมตา

บางครั้งเราจำเป็นต้องแปลงเอกสารก่อนที่จะจัดทำดัชนี ตัวอย่างเช่นเราต้องการลบเขตข้อมูลออกจากเอกสารหรือเปลี่ยนชื่อเขตข้อมูลแล้วจัดทำดัชนี สิ่งนี้จัดการโดยโหนด 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 เป็นสตริงที่ไม่มีการใช้ไปป์ไลน์