INFINI Easysearchは、Apache Luceneをベースにした分散型の近似リアルタイム検索および分析エンジンです。この製品は、Elasticsearchの代替として軽量で自主制御可能なソリューションを提供することを目的としており、企業向けの機能をさらに拡充し続けることを目指しています。Elasticsearchとの比較において、Easysearchは検索業務の最適化に重点を置き、シンプルで使いやすい製品設計を維持しています。
EasysearchはElasticsearchのDSLクエリ構文をネイティブにサポートしており、既存のコードを変更することなくシームレスな移行が可能です。また、SQLクエリもサポートしており、SQLに慣れた開発者にとってデータ分析がより簡単になります。さらに、ElasticsearchのSDKや既存のインデックスストレージ形式にも互換性があり、冷熱アーキテクチャやインデックスライフサイクル管理をサポートし、データのスムーズな連携が可能になります。
インストール
インストールスクリプト
LinuxまたはMacでは、1つのスクリプトでインストールできます。
curl -sSL http://get.infini.cloud | bash -s -- -p easysearch
また、バイナリ形式のインストーラーも用意されています。
Java環境の設定を避けたい場合に利用できるものもあります。 https://release.infinilabs.com/easysearch/stable/bundle/
Dockerによる展開
公式にはDocker Composeの例が用意されており、3つのサービスがあります。
- easysearch-node1
- easysearch-node2
- console
以下に詳細を示します。
バージョン制御:
- version: '3' は、Docker Composeファイルのバージョン3を使用するという意味です。
サービス定義:
-
easysearch-node1とeasysearch-node2:
- これらのサービスは、同じDockerイメージinfinitlabs/easysearch:latestを使用して2ノードのクラスターを構成します。
- コンテナーランタイムではユーザーIDとグループID602:602を使用します。
- Java仮想マシンのメモリを構成するES_JAVA_OPTS環境変数を設定します。
- ulimitsオプションによりメモリロックとファイルディスクリプタの制限を設定し、パフォーマンスを向上させます。
- コンテナ内のコンフィギュレーション、データ、ログディレクトリはホストディレクトリにマウントされ、データの永続化が可能になります。
- 特定のポートが公開され、外部からコンテナ内のサービスにアクセスできます。
- 2つのノードはesnetというカスタムネットワークに参加します。
-
console:
- このサービスは、画像infinilabs/console:1.26.0-1552を使用します(latestがないため、手動で特定のバージョン番号に変更する必要があります)。
- 同様に、データとログディレクトリをホストにマウントします。
- Webインターフェースへのアクセスに9000ポートが公開されます。
- easysearch-node1とeasysearch-node2への通信を簡略化するためにlinks機能を使用します。
- TZ環境変数をAsia/Shanghaiに設定します。
ネットワーク構成:
- esnetネットワークはbridgeドライバを使用し、隔離されたネットワーク環境を提供します。サブネット172.24.0.0/16を設定し、サービス間のネットワーク通信を確保します。
version: '3'
services:
easysearch-node1:
user: "602:602"
image: infinilabs/easysearch:latest
container_name: easysearch-node1
hostname: easysearch-node1
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- $PWD/ezs1/config:/app/easysearch/config
- $PWD/ezs1/data:/app/easysearch/data
- $PWD/ezs1/logs:/app/easysearch/logs
ports:
- 9201:9200
- 9301:9300
networks:
- esnet
easysearch-node2:
user: "602:602"
image: infinilabs/easysearch:latest
container_name: easysearch-node2
hostname: easysearch-node2
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- $PWD/ezs2/config:/app/easysearch/config
- $PWD/ezs2/data:/app/easysearch/data
- $PWD/ezs2/logs:/app/easysearch/logs
ports:
- 9202:9200
- 9302:9300
networks:
- esnet
console:
image: infinilabs/console:1.26.0-1552
container_name: console
hostname: console
volumes:
- $PWD/console/data:/data
- $PWD/console/log:/log
networks:
- esnet
ports:
- 9000:9000
links:
- easysearch-node1:es1
- easysearch-node2:es2
environment:
- TZ=Asia/Shanghai
networks:
esnet:
driver: bridge
ipam:
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=$1
default_ans=$2
if [[ $default_ans == 'y/N' ]]; then
must_match='[yY]'
else
must_match='[nN]'
fi
read -p"${display_str} [${default_ans}]:" ans
[[ $ans == $must_match ]]
}
# 全てのデータを削除するか確認
confirm "危険警告:すべてのデータを削除します!!" '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/
コンソール接続
クラスター接続パラメータを設定し、例えばドメインとポート、ユーザー名とパスワードを指定します。
初期化を行い、インデックスを作成し、サンプルデータを書き込みます。
バックエンド管理のパスワードを設定し、後ほどこのパスワードでコンソールにログインします。
設定を確認し、クラスターの関連付けを行います。
これはバックエンド管理画面であり、ユーザー名とパスワードだけでなく、シングルサインオンもサポートしています。
エンジン間、バージョン間、クラスター間での一括処理!
ポータルを使ってノード数を確認できます。
RESTスタイルのAPIもサポートしており、クエリが可能です。
続いて、コンソールでAmazon OpenSearchに接続します。
クラスターのURL、ユーザー名、パスワードを入力します。
これにより、クラスターの情報、例えばアドレス、バージョン、クラスター状態、ノード数などを取得できます。
最後に接続成功のメッセージを見ることができます。
クラスター管理では、Easysearchのクラスターと先ほど追加したOpenSearchのクラスターが表示されます。
オープンソースですか?現在はソースコードは公開されていません。
作者:韓旭、アマゾンクラウド技術サポート、アマゾンクラウドテクノロジー技領雲ブロガー、現在はクラウドコンピューティング開発とビッグデータ分野に注力しています。
Easysearchに関する投稿キャンペーン
あなたがEasysearchの古いユーザーであっても、初めて聞いたことであっても、INFINI LabsのEasysearch製品に興味がある人、またはEasysearchについて知りたい人は、このイベントに参加できます。
詳細は:Easysearch投稿キャンペーン