Elasticsearch - การเข้าถึง SQL
เป็นคอมโพเนนต์ที่ช่วยให้การสืบค้นแบบ SQL ดำเนินการแบบเรียลไทม์กับ Elasticsearch คุณสามารถนึกถึง Elasticsearch SQL ในฐานะตัวแปลซึ่งเข้าใจทั้ง SQL และ Elasticsearch และทำให้ง่ายต่อการอ่านและประมวลผลข้อมูลแบบเรียลไทม์ในระดับขนาดโดยใช้ประโยชน์จากความสามารถของ Elasticsearch
ข้อดีของ Elasticsearch SQL
It has native integration - แต่ละการสืบค้นจะดำเนินการอย่างมีประสิทธิภาพกับโหนดที่เกี่ยวข้องตามที่เก็บข้อมูลพื้นฐาน
No external parts - ไม่จำเป็นต้องใช้ฮาร์ดแวร์กระบวนการรันไทม์หรือไลบรารีเพิ่มเติมเพื่อค้นหา Elasticsearch
Lightweight and efficient - มันรวบรวมและเปิดเผย SQL เพื่อให้สามารถค้นหาข้อความแบบเต็มได้อย่างเหมาะสมแบบเรียลไทม์
ตัวอย่าง
PUT /schoollist/_bulk?refresh
{"index":{"_id": "CBSE"}}
{"name": "GleanDale", "Address": "JR. Court Lane", "start_date": "2011-06-02",
"student_count": 561}
{"index":{"_id": "ICSE"}}
{"name": "Top-Notch", "Address": "Gachibowli Main Road", "start_date": "1989-
05-26", "student_count": 482}
{"index":{"_id": "State Board"}}
{"name": "Sunshine", "Address": "Main Street", "start_date": "1965-06-01",
"student_count": 604}
ในการรันโค้ดด้านบนเราจะได้รับคำตอบตามที่แสดงด้านล่าง -
{
"took" : 277,
"errors" : false,
"items" : [
{
"index" : {
"_index" : "schoollist",
"_type" : "_doc",
"_id" : "CBSE",
"_version" : 1,
"result" : "created",
"forced_refresh" : true,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1,
"status" : 201
}
},
{
"index" : {
"_index" : "schoollist",
"_type" : "_doc",
"_id" : "ICSE",
"_version" : 1,
"result" : "created",
"forced_refresh" : true,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1,
"status" : 201
}
},
{
"index" : {
"_index" : "schoollist",
"_type" : "_doc",
"_id" : "State Board",
"_version" : 1,
"result" : "created",
"forced_refresh" : true,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1,
"status" : 201
}
}
]
}
แบบสอบถาม SQL
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเราจัดกรอบแบบสอบถาม SQL อย่างไร -
POST /_sql?format=txt
{
"query": "SELECT * FROM schoollist WHERE start_date < '2000-01-01'"
}
ในการรันโค้ดด้านบนเราจะได้รับคำตอบตามที่แสดงด้านล่าง -
Address | name | start_date | student_count
--------------------+---------------+------------------------+---------------
Gachibowli Main Road|Top-Notch |1989-05-26T00:00:00.000Z|482
Main Street |Sunshine |1965-06-01T00:00:00.000Z|604
Note - โดยการเปลี่ยนแบบสอบถาม SQL ด้านบนคุณจะได้รับชุดผลลัพธ์ที่แตกต่างกัน