วิธีสร้างดัชนี Elasticsearch

How Create Elasticsearch Indices



Elasticsearch เป็นส่วนหนึ่งของ ELK stack ยอดนิยมที่ใช้สำหรับการวิเคราะห์บันทึกและการค้นหา แอปพลิเคชันและระบบกำลังบันทึกข้อมูลอย่างต่อเนื่องซึ่งจะเป็นประโยชน์อย่างมากสำหรับการแก้ไขปัญหาและการติดตามปัญหา เมื่อใช้ ELK stack คุณจะมีเครื่องมือที่ดีที่สุดในการทำงานเหล่านี้อย่างรวดเร็วและง่ายดาย

ในบทช่วยสอนสั้นๆ นี้ เราจะมาดูที่ Elasticsearch โดยเฉพาะวิธีสร้างดัชนีในเครื่องมือ Elasticsearch แม้ว่าคุณไม่จำเป็นต้องมีความรู้ที่ครอบคลุมเกี่ยวกับ ELK stack เพื่อทำตามบทช่วยสอนนี้ การมีความเข้าใจพื้นฐานเกี่ยวกับหัวข้อต่อไปนี้อาจเป็นประโยชน์:







  • การใช้เทอร์มินัลโดยเฉพาะ cURL
  • ความรู้พื้นฐานเกี่ยวกับ API และ JSON
  • กำลังสร้างคำขอ HTTP

บันทึก: บทช่วยสอนนี้ยังถือว่าคุณได้ติดตั้งและใช้งาน Elasticsearch บนระบบของคุณแล้ว



ดัชนี Elasticsearch คืออะไร?

ดัชนี Elasticsearch คือชุดของเอกสาร JSON ที่เกี่ยวข้อง โดยปราศจากการทำให้เข้าใจง่ายเกินไปหรือซับซ้อนเกินไป



ตามที่กล่าวไว้ในโพสต์ก่อนหน้านี้ ดัชนี Elasticsearch เป็นออบเจ็กต์ JSON ซึ่งถือเป็นหน่วยพื้นฐานของที่เก็บข้อมูลใน Elasticsearch เอกสาร JSON ที่เกี่ยวข้องเหล่านี้ถูกเก็บไว้ในหน่วยเดียวที่ประกอบเป็นดัชนี คิดว่าเอกสาร Elasticsearch เป็นตารางในฐานข้อมูลเชิงสัมพันธ์





มาเชื่อมโยงดัชนี Elasticsearch เป็นฐานข้อมูลในโลกของ SQL

  • MySQL => ฐานข้อมูล => ตาราง => คอลัมน์/แถว
  • Elasticsearch => ดัชนี => ประเภท => เอกสาร JSON พร้อมคุณสมบัติ

วิธีสร้างดัชนี Elasticsearch

Elasticsearch ใช้ REST API ที่มีประสิทธิภาพและใช้งานง่ายเพื่อเปิดเผยบริการต่างๆ ฟังก์ชันนี้อนุญาตให้คุณใช้คำขอ HTTP เพื่อดำเนินการบนคลัสเตอร์ Elasticsearch ดังนั้น เราจะใช้ create index API เพื่อสร้างดัชนีใหม่



สำหรับคู่มือนี้ เราจะใช้ cURL เพื่อส่งคำขอและรักษาความสมบูรณ์และความสามารถในการใช้งานสำหรับผู้ใช้ทั้งหมด อย่างไรก็ตาม หากคุณพบข้อผิดพลาดกับ cURL ให้ลองใช้ Kibana Console

ไวยากรณ์สำหรับการสร้างดัชนีใหม่ในคลัสเตอร์ Elasticsearch คือ:

ใส่ /

ในการสร้างดัชนี สิ่งที่คุณต้องทำคือส่งชื่อดัชนีโดยไม่มีพารามิเตอร์อื่น ซึ่งจะสร้างดัชนีโดยใช้การตั้งค่าเริ่มต้น

คุณยังสามารถระบุคุณลักษณะต่างๆ ของดัชนี เช่น ในตัวดัชนี:

  • การตั้งค่าสำหรับดัชนี
  • ชื่อแทนดัชนี
  • การแมปสำหรับฟิลด์ดัชนี

ชื่อดัชนีเป็นพารามิเตอร์ที่จำเป็น มิฉะนั้น คุณจะได้รับข้อผิดพลาดสำหรับ URIL (/)

curl -X PUT localhost:9200
{'error':'วิธี HTTP ไม่ถูกต้องสำหรับ uri [/] และวิธี [PUT] อนุญาต: [DELETE, HEAD, GET]','status':405}

ในการสร้างดัชนีใหม่ด้วยชื่อ single_index เราส่งคำขอ:

วาง /single_index

สำหรับ cURL ให้ใช้คำสั่ง:

curl -X PUT 'localhost:9200/single_index?สวย'

คำสั่งนี้ควรส่งผลให้ HTTP Status 200 OK และข้อความที่ตอบรับ: true เป็น:

{
รับทราบ: จริง
'shards_acknowledged' : จริง
'ดัชนี' : 'single_index'
}

คำขอด้านบนสร้างดัชนี single_index พร้อมการตั้งค่าเริ่มต้น เนื่องจากเราไม่ได้ระบุการกำหนดค่าใดๆ

กฎการตั้งชื่อดัชนี

เมื่อสร้างชื่อสำหรับดัชนี Elasticsearch คุณต้องปฏิบัติตามมาตรฐานการตั้งชื่อต่อไปนี้:

  1. ชื่อดัชนีต้องเป็นตัวพิมพ์เล็กเท่านั้น
  2. ชื่อดัชนีต้องไม่ขึ้นต้นด้วยขีดกลาง (-) ขีดล่าง (_) หรือเครื่องหมายบวก (+)
  3. ชื่อไม่สามารถเป็น หรือ ..
  4. ชื่อดัชนีต้องไม่มีอักขระพิเศษ เช่น , /, *, ?, , , |, ` ` (อักขระเว้นวรรค), ,, #
  5. ความยาวของชื่อดัชนีต้องน้อยกว่า 255 ไบต์ อักขระแบบหลายไบต์จะนับรวมในความยาวทั้งหมดของชื่อดัชนี ตัวอย่างเช่น หากอักขระตัวเดียวมีความยาว 8 ไบต์ ความยาวรวมที่เหลือของชื่อคือ 255 – 8
  6. ใน Elasticsearch เวอร์ชันล่าสุด ชื่อที่ขึ้นต้นด้วย . สงวนไว้สำหรับดัชนีที่ซ่อนอยู่และดัชนีภายในที่ใช้โดยปลั๊กอิน Elasticsearch

วิธีสร้างตัวดัชนี

เมื่อใช้คำขอ PUT เพื่อสร้างดัชนี คุณสามารถส่งผ่านอาร์กิวเมนต์ต่างๆ ที่กำหนดการตั้งค่าสำหรับดัชนีที่คุณต้องการสร้างได้ ค่าที่คุณสามารถระบุได้ในเนื้อหา ได้แก่

  • นามแฝง: ระบุชื่อนามแฝงสำหรับดัชนีที่คุณต้องการสร้าง พารามิเตอร์นี้เป็นทางเลือก
  • การตั้งค่า: กำหนดตัวเลือกการกำหนดค่าสำหรับดัชนีที่คุณต้องการสร้าง หากคุณไม่สามารถระบุพารามิเตอร์ใดๆ ได้ ดัชนีจะถูกสร้างขึ้นโดยใช้การกำหนดค่าเริ่มต้น
  • การทำแผนที่: สิ่งนี้กำหนดแผนที่สำหรับฟิลด์ในดัชนี ข้อกำหนดที่คุณสามารถรวมในการแมปได้แก่:
    • ชื่อสนาม
    • ประเภทข้อมูล
    • พารามิเตอร์การทำแผนที่

สำหรับตัวอย่างการสร้างดัชนีที่มีการกำหนดค่าเนื้อหา ให้พิจารณาคำขอด้านล่าง:

วาง /single_index_with_body
{
'การตั้งค่า': {
'number_of_shards': 2,
'number_of_replicas': 2
},
การแมป: {
'คุณสมบัติ': {
'field1': { 'type': 'object' }
}
}
}

สำหรับคำขอที่เทียบเท่ากับ cURL:

curl -XPUT 'http://localhost:9200/single_index_with_body' -H 'Content-Type: application/json' -d'{ 'settings': { 'number_of_shards': 2, 'number_of_replicas': 2 }, 'mappings' : { 'คุณสมบัติ': { 'field1': { 'ประเภท': 'วัตถุ' } } }}'

คำขอข้างต้นสร้างดัชนีใหม่ที่มีชื่อ single_index_with_body โดยมีส่วนแบ่งข้อมูล 2 หมายเลขและแบบจำลอง 2 รายการ นอกจากนี้ยังสร้างการแมปที่มีฟิลด์ชื่อ field1 และพิมพ์เป็นอ็อบเจ็กต์ JSON

เมื่อคุณส่งคำขอ คุณจะได้รับการตอบกลับพร้อมสถานะคำขอเป็น:

{
รับทราบ: จริง
'shards_acknowledged' : จริง
'ดัชนี' : 'single_index_with_body'
}

รับทราบแล้ว แสดงว่าสร้างดัชนีสำเร็จในคลัสเตอร์หรือไม่ ในขณะที่ shards_acknowledged แสดงว่ามีการเริ่มสำเนาชาร์ดตามจำนวนที่ต้องการสำหรับทุกชาร์ดในดัชนีที่ระบุก่อนหมดเวลาหรือไม่

วิธีดูดัชนี Elasticsearch

หากต้องการดูข้อมูลเกี่ยวกับดัชนีที่คุณสร้าง ให้ใช้คำขอที่คล้ายกับการสร้างดัชนี แต่ใช้วิธี HTTP แทน PUT ดังนี้:

GET /single_index_with_body

สำหรับ cURL

curl -XGET http://localhost:9200/single_index_with_body

คำสั่งนี้จะให้ข้อมูลโดยละเอียดเกี่ยวกับดัชนีที่ร้องขอเป็น:

{
'single_index_with_body' : {
'นามแฝง' : { },
'การแมป' : {
'คุณสมบัติ' : {
'field1' : {
'type' : 'object'
}
}
},
'การตั้งค่า' : {
'ดัชนี' : {
'เส้นทาง' : {
'การจัดสรร' : {
'รวม' : {
'_tier_preference' : 'data_content'
}
}
},
'number_of_shards' : '2',
'provided_name' : 'single_index_with_body',
'creation_date' : '1611045687208',
'number_of_replicas' : '2',
'uuid' : '3TRkO7xmQcSUOOGtb6pXVA',
'รุ่น' : {
'สร้าง' : '7100299'
}
}
}
}
}

บทสรุป

คู่มือนี้กล่าวถึงวิธีการทำงานกับ Elasticsearch เพื่อสร้างดัชนี API เพื่อสร้างดัชนีใหม่ เรายังกล่าวถึงวิธีการสร้างชื่อที่เหมาะสมสำหรับดัชนีและการตั้งค่าการกำหนดค่า

โดยใช้คู่มือนี้ คุณสามารถสร้างและดูดัชนีโดยใช้ Elasticsearch API ได้แล้ว