INFINI Easysearch 是一個分布式的近實時搜索與分析引擎,核心引擎基于開源的 Apache Lucene。Easysearch 的目標是提供一個自主可控的輕量級的 Elasticsearch 可替代版本,并繼續完善和支持更多的企業級功能。 與 Elasticsearch 相比,Easysearch 更關注在搜索業務場景的優化和繼續保持其產品的簡潔與易用性。
Easysearch 支持原生 Elasticsearch 的 DSL 查詢語法,確保原業務代碼無需調整即可無縫遷移。同時,極限科技還支持 SQL 查詢,為熟悉 SQL 的開發人員提供更加便捷的數據分析方式。此外,Easysearch 兼容 Elasticsearch 的 SDK 和現有索引存儲格式,支持冷熱架構和索引生命周期管理,確保用戶能夠輕松實現數據的無縫銜接。
安裝
安裝腳本
無論是Linux還是 mac 都是這個一鍵腳本
curl -sSL http://get.infini.cloud | bash -s -- -p easysearch
同時也提供了二進制的安裝包:
如果不想整理JAVA環境問題,還可以使用這個
https://release.infinilabs.com/easysearch/stable/bundle/
docker 部署
官方提供了Docker Compose 樣例,包括三個服務:easysearch-node1
、easysearch-node2
和 console
。以下是詳細說明:
-
版本控制:
version: '3'
表示使用 Docker Compose 文件的第 3 版格式。
-
服務定義:
-
easysearch-node1 和 easysearch-node2:
- 這兩個服務使用相同的 Docker 鏡像
infinilabs/easysearch:latest
來組成雙節點的集群。 - 容器運行時使用用戶和組 ID
602:602
。 - 設置了
ES_JAVA_OPTS
環境變量以配置 Java 虛擬機的內存。 ulimits
選項配置了內存鎖定和文件描述符的限制,以提升性能。- 容器內的配置、數據和日志目錄通過卷映射到主機目錄中,以便于數據持久化。
- 服務暴露特定端口,使外部能夠訪問容器中的服務。
- 兩個節點均加入名為
esnet
的自定義網絡中。
- 這兩個服務使用相同的 Docker 鏡像
-
console:
- 該服務使用鏡像
infinilabs/console:1.26.0-1552
(該鏡像沒有latest,需要手動把latest更改位特定的版本號)。 - 同樣通過卷將數據和日志目錄映射到主機。
- 暴露 9000 端口用于 Web 界面訪問。
- 使用
links
功能鏈接到easysearch-node1
和easysearch-node2
,簡化容器之間的通信。 - 設置了時區環境變量
TZ
為Asia/Shanghai
。
- 該服務使用鏡像
-
-
網絡配置:
esnet
網絡使用bridge
驅動,提供一個隔離的網絡環境,配置了特定的子網172.24.0.0/16
,以確保服務之間的網絡通信。
version: '3'
services:easysearch-node1:user: "602:602"image: infinilabs/easysearch:latestcontainer_name: easysearch-node1hostname: easysearch-node1environment:- "ES_JAVA_OPTS=-Xms1g -Xmx1g"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536volumes:- $PWD/ezs1/config:/app/easysearch/config- $PWD/ezs1/data:/app/easysearch/data- $PWD/ezs1/logs:/app/easysearch/logsports:- 9201:9200- 9301:9300networks:- esneteasysearch-node2:user: "602:602"image: infinilabs/easysearch:latestcontainer_name: easysearch-node2hostname: easysearch-node2environment:- "ES_JAVA_OPTS=-Xms1g -Xmx1g"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536volumes:- $PWD/ezs2/config:/app/easysearch/config- $PWD/ezs2/data:/app/easysearch/data- $PWD/ezs2/logs:/app/easysearch/logsports:- 9202:9200- 9302:9300networks:- esnetconsole:image: infinilabs/console:1.26.0-1552container_name: consolehostname: consolevolumes:- $PWD/console/data:/data- $PWD/console/log:/lognetworks:- esnetports:- 9000:9000links:- easysearch-node1:es1- easysearch-node2:es2environment:- TZ=Asia/Shanghainetworks:esnet:driver: bridgeipam:config:- subnet: 172.24.0.0/16
盡管在這里官方提供了詳細的命令,完全可以使用這個docker-compose up來進行替代。其他的腳本解釋如下:
init.sh
#!/bin/bash# 獲取當前腳本所在目錄的絕對路徑
CUR_DIR=$(cd $(dirname $0); pwd)# 創建必要的目錄結構
mkdir -p $CUR_DIR/console/{data,log}
mkdir -p $CUR_DIR/{ezs1,ezs2}/{data,logs}# 設置目錄的擁有者和權限
chown -R 1000:1000 $CUR_DIR/console
chown -R 602:602 $CUR_DIR/{ezs1,ezs2}
chmod -R 0600 $CUR_DIR/{ezs1,ezs2}/config
# 設置 config 目錄的子目錄權限
find $CUR_DIR/{ezs1,ezs2}/config -type d -print0 | xargs -0 chmod 750
reset.sh
#!/bin/bash# 獲取當前腳本所在目錄的絕對路徑
CUR_DIR=$(cd $(dirname $0); pwd)# 定義確認函數
function confirm() {display_str=$1default_ans=$2if [[ $default_ans == 'y/N' ]]; thenmust_match='[yY]'elsemust_match='[nN]'firead -p"${display_str} [${default_ans}]:" ans[[ $ans == $must_match ]]
}# 提示用戶確認刪除所有數據
confirm "RISK WARN: Delete all data!!!" 'y/N' && echo || exit# 刪除 console、ezs1 和 ezs2 的數據和日志文件
rm -rvf $CUR_DIR/console/{data,log}/*
rm -rvf $CUR_DIR/{ezs1,ezs2}/{data,logs}/*
start.sh
#!/bin/bash# 使用 Docker Compose 啟動 ezs2 項目中的服務
docker-compose -p ezs2 up
stop.sh
#!/bin/bash# 使用 Docker Compose 關閉并移除 ezs2 項目中的所有服務
docker-compose -p ezs2 down
在我的電腦中,可以看到成功啟動的容器。
https://infinilabs.cn/docs/latest/easysearch/getting-started/install/docker-compose/
Console連接
設置集群連接參數,比如域名端口,用戶名密碼。
初始化,這里會新建索引,寫一些sample數據。
設置后臺管理的密碼,后期使用這個登錄控制臺。
檢查配置,完成集群關聯。
這個是后臺管理界面,除了用戶名密碼之外,也支持單點登錄:
跨引擎、跨版本、跨集群 獨一份!
使用自帶的面板進行查看節點數量:
同時也支持REST 風格的API來進行查詢。
接下來來使用Console連接Amazon的OpenSearch:
同樣是輸入集群的URL,用戶名和密碼。
然后可以拿到集群的信息,比如地址,版本號,集群狀態,節點數量。
最后看到連接成功的信息。
我們可以在集群管理中看到EasySearch的集群和我們剛剛添加的OpenSearch集群。
是否開源?目前還沒有開放源代碼。