“เมื่อทำงานกับดัชนี 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 เพื่อลบฟิลด์ออกจากเอกสารที่มีอยู่
ขอบคุณที่อ่าน!!