Elasticsearch是一款非常強大的搜尋引擎,可以讓你在海量的資料中快速找到想要的内容。例如,代碼搜尋:可以幫助您找到相應的代碼倉庫,還可以實作代碼級的搜尋及高亮顯示;網上shopping:可以幫助您推薦商品。
除了大資料搜尋,Elasticsearch結合Logstash和Beats,還被廣泛應用在大資料實時分析領域,例如日志分析、名額監控、資訊安全等。幫助您探索海量的結構化和非結構化的資料,按需建立可視化報表、對監控資料設定報警門檻值,甚至使用機器學習技術,自動識别異常狀況、及時發出警報。
在DBRanking 2019年5月的資料庫評測中,Elasticsearch在搜尋引擎中排名第一,國内也有大量的公司在使用Elasticsearch。并且Elasticsearch在全球的下載下傳量已經超過了3.5億次。如果您需要将Solr叢集中的資料遷移至Elasticsearch,請跟着本文一步步來操作吧。
本文以
阿裡雲Elasticsearch 為例,為您示範通過第三方社群提供的solr-to-es工具,将Solr節點中的文檔遷移到阿裡雲Elasticsearch(簡稱ES)中的方法。 相容開源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商業功能,緻力于資料分析、資料搜尋等場景服務。支援5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商業插件X-Pack服務。在開源Elasticsearch的基礎上提供企業級權限管控、安全監控告警、自動報表生成等功能。阿裡雲Elasticsearch為您提供1個月的免費試用活動,單擊 此處 即可免費試用。環境準備
- 建立阿裡雲ES執行個體,要求版本為6.x,本文使用6.3.2 版本,詳情請參見 建立阿裡雲Elasticsearch執行個體 。
**說明:** 本文使用的solr-to-es遷移工具僅支援阿裡雲ES 6.x版本,其他版本需自行測試。
- 開啟目标阿裡雲ES的自動建立索引功能,詳情請參見 開啟自動建立索引
- 建立阿裡雲ECS執行個體,本文使用CentOS 7.3版本,詳情請參見 步驟一:建立ECS執行個體
**說明:** ECS執行個體需要與阿裡雲ES執行個體在同一區域和可用區,以及同一專有網絡VPC(Virtual Private Cloud)下。
- 在ECS上安裝Solr,本文使用5.0.0版本的Solr,詳情請參見 Solr官方文檔
- 在ECS上安裝Python,要求3.0及以上版本,本文使用Python 3.6.2。
- 在ECS上安裝PySolr,要求3.3.3及以上,4.0以下版本。
安裝solr-to-es工具
- 連接配接ECS伺服器,下載下傳 solr-to-es工具
- 進入setup.py所在的目錄,運作
指令,安裝solr-to-es工具。python setup.py install
- 安裝成功後,參考以下指令進行文檔遷移。
python __main__.py <solr_url>:8983/solr/<my_core>/select http://<username>:<password>@<elasticsearch_url>:9200 <elasticsearch_index> <doc_type>
|參數|說明|
|--|--|
|`<solr_url>`|Solr叢集的完整通路位址。例如,http://116.62.\*\*.\*\*。|
|`<my_core>`|遷移文檔對應的SolrCore的名稱。|
|`<username>`|阿裡雲ES的通路使用者名,預設為elastic。|
|`<password>`|阿裡雲ES的通路密碼,在建立執行個體時設定。|
|`<elasticsearch_url>`|阿裡雲ES執行個體的内網或外網通路位址。可在執行個體的基本資訊頁面擷取,詳情請參見[檢視執行個體的基本資訊](https://help.aliyun.com/document_detail/67804.html?spm=a2c4g.11186623.2.19.18a87461Jp4xKZ#task-2449896)。|
|`<elasticsearch_index>`|待寫入的Solr文檔對應的索引名稱。|
|`<doc_type>`|對應索引的類型名稱。|
**說明:** 如果您使用的是其他版本的solr-to-es工具,也可以嘗試使用如下指令進行文檔遷移,參數詳情請參見[solr-to-es](https://github.com/o19s/solr-to-es)。
solr-to-es [-h] [--solr-query SOLR_QUERY] [--solr-fields COMMA_SEP_FIELDS]
[--rows-per-page ROWS_PER_PAGE] [--es-timeout ES_TIMEOUT]
solr_url elasticsearch_url elasticsearch_index doc_type
本案例使用以上指令會輸出`-bash: solr-to-es.py: command not found`的錯誤。
操作示例
通過以下指令,查詢名稱為
my_core
的SolrCore的所有文檔,寫入到阿裡雲ES執行個體中。對應的索引為
elasticsearch_index
,索引類型為
doc_type
- 在Solr環境中,進入solr-to-es-master/solr_to_es檔案夾下。
- 執行以下指令。
python __main__.py 'http://116.62.**.**:8983/solr/my_core/select?q=*%3A*&wt=json&indent=true' 'http://elastic:替換密碼@es-cn-so4lwf40ubsrf****.public.elasticsearch.aliyuncs.com:9200' elasticsearch_index doc_type
|參數|說明|
|--|--|
|`q`|Solr的查詢文法,必選,可以使用運算符。`*%3A*`表示查詢所有文檔。|
|`wt`|傳回的資料類型,支援JSON、XML、Python、Ruby、CSV等格式。|
|`indent`|傳回結果是否需要格式化展示,預設為`false`。|
其他參數說明請參見[表 1](https://help.aliyun.com/document_detail/143003.html?spm=a2c4g.11174283.6.832.4d097958P4tOeH#table-lnc-t0w-8ud)。
- 登入目标阿裡雲ES執行個體的Kibana控制台。
登入控制台的具體操作步驟請參見[登入Kibana控制台](https://help.aliyun.com/document_detail/122668.html?spm=a2c4g.11186623.2.22.18a87461Jp4xKZ#task-761873)。
- 單擊左側導航欄的Dev Tools(開發工具),在Console中執行以下指令,檢視阿裡雲ES叢集服務中是否已成功建立
索引。elasticsearch_index
GET _cat/indices?v
- 執行以下指令,檢視遷移成功的文檔詳情。
GET /elasticsearch_index/doc_type/_search
查詢成功後,傳回如下結果。
{
"took" : 12,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [
{
"_index" : "elasticsearch_index",
"_type" : "doc_type",
"_id" : "Tz8WNW4BwRjcQciJ****",
"_score" : 1.0,
"_source" : {
"id" : "2",
"title" : [
"test"
],
"_version_" : 1648195017403006976
}
},
{
"_index" : "elasticsearch_index",
"_type" : "doc_type",
"_id" : "Tj8WNW4BwRjcQciJ****",
"_score" : 1.0,
"_source" : {
"id" : "1",
"title" : [
"change.me"
],
"_version_" : 1648195007391203328
}
}
]
}
}
相關活動
更多折扣活動,請通路
阿裡雲 Elasticsearch 官網 阿裡雲 Elasticsearch 商業通用版,1核2G ,SSD 20G首月免費 阿裡雲 Logstash 2核4G首月免費![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iNjRWNyYTMmNjN5UGNlVWY2EzM0IjN1UjZxY2YjNDOh9CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)