本文主要測試驗證 Elasticsearch 各版本快照在 [Easysearch](https://www.infinilabs.com/docs/latest/easysearch/overview) 中進行數據恢復。 ## 準備測試數據 ### 索引 ![](https://www.infin ...
本文主要測試驗證 Elasticsearch 各版本快照在 Easysearch 中進行數據恢復。
準備測試數據
索引
別名
模版
生命周期策略
創建快照
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/infini/test/es_backup"
}
}
PUT /_snapshot/my_backup/snapshot_1
{
"indices": "*",
"ignore_unavailable": false,
"include_global_state": false
}
GET /_snapshot/my_backup/snapshot_1
- ignore_unavailable:如果 indices 列表中的索引不存在,則是否忽略該索引而不是使快照失敗。預設值為 false 。
- include_global_state:是否在快照中包含集群狀態(包括索引模版、生命周期配置、持久化配置等)。預設值為 true ,建議設為 false。
恢復快照
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "*",
"ignore_unavailable": false,
"include_global_state": false,
"include_aliases": true,
"ignore_index_settings": [
"index.lifecycle.indexing_complete"
]
}
- ignore_unavailable:如果 indices 列表中的索引不存在,則是否忽略該索引而不是使還原操作失敗。預設值為 false 。
- include_global_state:是否還原群集狀態。預設值為 false 。
- include_aliases:是否恢復別名及其關聯索引。預設值為 true 。
- index.lifecycle.indexing_complete 配置不支持,忽略掉。
數據驗證
索引
通過 gateway 進行數據比對
path.data: data
path.logs: log
#show progress bar
#progress_bar.enabled: true
elasticsearch:
- name: source
enabled: true
endpoints:
- http://192.168.3.185:29200
- name: target
enabled: true
endpoints:
- https://192.168.3.185:9205
basic_auth:
username: admin
password: admin
pipeline:
- name: index_diff_service
auto_start: true
processor:
- dag:
mode: wait_all
parallel:
- dump_hash: #dump es1's doc
sort_document_fields: true
indices: ".infini_activities-000004" ##需要比對的索引名
scroll_time: "10m"
elasticsearch: "source"
# query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2"
# fields: "doc_hash"
output_queue: "source_docs"
batch_size: 5000
slice_size: 1
# hash_func: "xxhash64"
- dump_hash: #dump es2's doc
indices: ".infini_activities-000004"
scroll_time: "10m"
# fields: "doc_hash"
# query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2"
batch_size: 5000
slice_size: 1
# hash_func: "xxhash64"
elasticsearch: "target"
output_queue: "target_docs"
end:
- index_diff:
diff_queue: "diff_result"
buffer_size: 10
text_report: true #如果要存 es,這個開關關閉,開啟 pipeline 的 diff_result_ingest 任務
source_queue: "source_docs"
target_queue: "target_docs"
#pipeline:
# - name: diff_result_ingest
# processor:
# - json_indexing:
# index_name: "diff_result"
# elasticsearch: "source"
# input_queue: "diff_result"
./gateway-linux-amd64 -config data_check.yml
別名
模版
PUT _template/.infini_activities-rollover
{
"order": 100000,
"index_patterns": [
".infini_activities*"
],
"settings": {
"index": {
"format": "7",
"lifecycle": {
"name": "ilm_.infini_metrics-30days-retention",
"rollover_alias": ".infini_activities"
},
"codec": "best_compression",
"number_of_shards": "1",
"translog": {
"durability": "async"
}
}
},
"mappings": {
"dynamic_templates": [
{
"strings": {
"mapping": {
"ignore_above": 256,
"type": "keyword"
},
"match_mapping_type": "string"
}
}
]
},
"aliases": {}
}
PUT _template/.infini
{
"order": 0,
"index_patterns": [
".infini_*"
],
"settings": {
"index": {
"max_result_window": "10000000",
"mapping": {
"total_fields": {
"limit": "20000"
}
},
"analysis": {
"analyzer": {
"suggest_text_search": {
"filter": [
"word_delimiter"
],
"tokenizer": "classic"
}
}
},
"number_of_shards": "1"
}
},
"mappings": {
"dynamic_templates": [
{
"strings": {
"mapping": {
"ignore_above": 256,
"type": "keyword"
},
"match_mapping_type": "string"
}
}
]
},
"aliases": {}
}
生命周期策略
PUT _ilm/policy/ilm_.infini_metrics-30days-retention
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "30d"
},
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {
}
}
}
}
}
}
註:不支持 "delete_searchable_snapshot": true 配置
測試結果
源集群(Elasticsearch) | 目標集群(Easysearch) | 測試結果 |
---|---|---|
7.10.2 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
7.10.1 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
7.10.0 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
7.9.2 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
7.9.0 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
7.8.1 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
7.5.2 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
6.8.12 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
6.5.4 | 1.0.0 | 索引文檔一致,別名恢覆成功 |
關於 Easysearch
INFINI Easysearch 是一個分散式的近實時搜索與分析引擎,核心引擎基於開源的 Apache Lucene。 Easysearch 衍生自基於開源協議 Apache 2.0 的 Elasticsearch 7.10 版本。 Easysearch 的目標是提供一個輕量級的 Elasticsearch 可替代版本,並繼續完善和支持更多的企業級功能。 與 Elasticsearch 相比,Easysearch 更關註在搜索業務場景的優化和繼續保持其產品的簡潔與易用性。
詳情參見:官方文檔