Elasticsearch ลบฟิลด์

Elasticsearch Lb Fild



“เมื่อทำงานกับดัชนี Elasticearch คุณอาจพบอินสแตนซ์ที่คุณต้องการลบฟิลด์ออกจากเอกสารที่มีอยู่ น่าเสียดายที่ Elasticsearch ไม่ได้จัดเตรียมคำขอดั้งเดิมที่เราสามารถใช้ดำเนินการดังกล่าวได้

อย่างไรก็ตาม เราสามารถใช้ API การอัปเดตเอกสาร และส่งสคริปต์ที่ช่วยให้เราสามารถลบฟิลด์ตามชื่อของมันได้”







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



มาดำดิ่งกัน



ตรวจสอบว่ามีเอกสารหรือไม่

ก่อนที่จะลบฟิลด์ออกจากเอกสารใดเอกสารหนึ่ง คุณควรตรวจสอบให้แน่ใจว่าเอกสารเป้าหมายนั้นอยู่ภายในดัชนี





เราสามารถใช้ API การค้นหาเพื่อดึงเอกสารเป้าหมาย

ตัวอย่างเช่น สมมติว่าเรามีดัชนี kibana_sample_logs_data เราสามารถค้นหาดัชนีสำหรับเอกสารที่มี IP เฉพาะ



บันทึก : ตัวอย่างข้างต้นใช้เพื่อจุดประสงค์ในการอธิบายเท่านั้น คุณสามารถใช้วิธีการต่างๆ เพื่อตรวจสอบว่ามีเอกสารเฉพาะในดัชนีหรือไม่

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: การรายงาน' -H 'ประเภทเนื้อหา: แอปพลิเคชัน/json' -d'
{
'ขนาด': 0,
'query': {'match': {
'ไอพี': '171.24.97.162'
}}
}'

ผลลัพธ์ที่ได้:

{
'เอา': 3,
'timed_out': เท็จ
'_shards': {
'รวม': 1,
'สำเร็จ': 1,
'ข้าม': 0
'ล้มเหลว': 0
},
'ฮิต': {
'ทั้งหมด': {
'ค่า': 17,
'ความสัมพันธ์': 'eq'
},
'max_score': null,
'ฮิต': []
}

}

ถัดไป สคริปต์อย่างง่ายสามารถลบฟิลด์เป้าหมายออกจากเอกสารได้ เริ่มต้นด้วยการเข้าสู่คอนโซล Kibana ของคุณและเรียกใช้คำสั่ง:

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: การรายงาน' -H 'ประเภทเนื้อหา: แอปพลิเคชัน / json' -d'
{
'script': 'ctx._source.remove('\''ip'\'')'
}'

คำขอข้างต้นใช้สคริปต์บริบทที่ไม่ยุ่งยากในการอัปเดตเอกสารและลบฟิลด์ 'ip' ด้วย ID ที่ระบุ

เอาท์พุท:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_รุ่น': 2,
'ผลลัพธ์': 'อัปเดต',
'_shards': {
'รวม': 2,
'สำเร็จ': 2,
'ล้มเหลว': 0
},
'_seq_no': 14074,
'_primary_term': 1
}

เมื่อเอกสารได้รับการอัปเดตแล้ว คุณสามารถตรวจสอบได้โดยการเรียกใช้แบบสอบถาม:

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: กำลังรายงาน'

คำขอข้างต้นควรส่งคืนข้อมูลที่จัดเก็บไว้ในเอกสารด้วย ID ที่ระบุ

เราสามารถตรวจสอบว่าฟิลด์ IP นั้นไม่มีอยู่ในเอกสารแล้ว

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีใช้ความสามารถในการเขียนสคริปต์ของ Elasticsearch เพื่อลบฟิลด์ออกจากเอกสารที่มีอยู่

ขอบคุณที่อ่าน!!