Copy Index Elasticsearch ระหว่าง Server
ElasticsearchServer
อัพเดทล่าสุด 24 พ.ค. 65
คำสั่งง่ายๆๆๆๆ
POST /_reindex

{
    "source": {
        "remote": {
            "host": "http://{SOURCE_IP}:9200"
        },
        "index": "{INDEX_NAME_SOURCE}"
    },
    "dest": {
        "index": "{INDEX_NAME_DESTINATION}"
    }
}

มีจุดสำคัญคือ ถ้า Index เราก้อนใหญ่ไป มันจะขึ้น Error ประมาณว่า

Remote responded with a chunk that was too large.

ให้เพิ่ม size เข้าไป แบบนี้

POST /_reindex

{
    "source": {
        "remote": {
            "host": "http://{SOURCE_IP}:9200"
        },
        "size": 100,
        "index": "{INDEX_NAME_SOURCE}"
    },
    "dest": {
        "index": "{INDEX_NAME_DESTINATION}"
    }
}

มันจะแตกการนำเข้า เป็น batche ละ 100 document ทำให้ขนาดไม่เกิน limit แต่ถ้ามันไม่เกิน limit การส่งไป รวดเดียว จะเร็วกว่า

ต้องเปิด reindex.remote.whitelist ด้วย

ถ้าใช้ Docker ก็ง่ายๆ เพิ่ม env เข้าไปอีกตัว

docker run -d -e "reindex.remote.whitelist={SOURCE_IP}:9200" docker.elastic.co/elasticsearch/elasticsearch:8.2.0
Beta Version v23.12.4 : ขออภัยเว็บกำลังก่อสร้าง (อีกแล้ว) แต่คราวนี้กำลังสร้างจริงจังละ