ในบทช่วยสอนสั้นๆ นี้ เราจะมาดูที่ 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 คุณต้องปฏิบัติตามมาตรฐานการตั้งชื่อต่อไปนี้:
- ชื่อดัชนีต้องเป็นตัวพิมพ์เล็กเท่านั้น
- ชื่อดัชนีต้องไม่ขึ้นต้นด้วยขีดกลาง (-) ขีดล่าง (_) หรือเครื่องหมายบวก (+)
- ชื่อไม่สามารถเป็น หรือ ..
- ชื่อดัชนีต้องไม่มีอักขระพิเศษ เช่น , /, *, ?, , , |, ` ` (อักขระเว้นวรรค), ,, #
- ความยาวของชื่อดัชนีต้องน้อยกว่า 255 ไบต์ อักขระแบบหลายไบต์จะนับรวมในความยาวทั้งหมดของชื่อดัชนี ตัวอย่างเช่น หากอักขระตัวเดียวมีความยาว 8 ไบต์ ความยาวรวมที่เหลือของชื่อคือ 255 – 8
- ใน 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 ได้แล้ว