Elasticsearchを使用する理由

コンセプト

Elasticsearch(略してES)は、分散型全文検索エンジンです。
たとえば、githubのコード取得ではESが使用され、BaiduでもESが使用されます。
LuceneのAPIは比較的複雑であるため、ESは実際にはLuceneの単純化されたカプセル化であり、比較的単純なAPIドキュメントのセットを提供します。
es公式ウェブサイト

シーンを使用

主に大規模なデータ検索、キーワード:大規模ESの利点を反映できるのは大量のデータだけだからです。

以下は、私が考えることができる、または以前に遭遇したシナリオです。

1.ログの分析と処理に一般的に使用されるクラシックな組み合わせELK(elasticsearch + Logstash + kibana)


elasticsearch:ログの分散ストレージと全文検索を提供しますLogstash:ログの転送kibana
:フロントエンド表示

2.プロジェクト内の大容量データの保存と検索

たとえば、Weiboのようなバックグラウンドサービスを作成する場合は、この部分を取得するだけで、ESを検討できます。

3.プロジェクトでのリレーショナルデータの事前キャッシュ

プロジェクトが以下の特性を持つリレーショナルデータベースを使用している場合、ESをキャッシュのレイヤーとして使用することを検討できます。

  • 大量のデータですが、データ構造はそれほど複雑ではありません
  • クエリのプレッシャーが大きく、クエリの条件は多様で変化しやすい

たとえば、eコマースのWebサイトの場合、レビュー担当者やカスタマーサービス担当者の注文をクエリするためのインターフェイスに
は迅速なクエリが必要であり、履歴内の何億もの注文をすべてチェックできるため、必ずしも注文番号に基づいているわけではありません。多くのクエリ条件があり、同様のファジーマッチングがある場合があります。リレーショナルデータベースだけを使っているので、頑張らなくてはいけないと思いますが、ESを使えばとても簡単です。

ESの利点

水平方向の拡張を
サポート多くのプラグインをサポートする
と、実際にはフルテキスト検索のコアアドバンテージはLuceneであると言われているため、詳細を調べたい場合は、最初にLuceneを学習することをお勧めします(luceneデータやインデックスストレージなど)。よし。
全体として、ESがスポーツカーである場合、Luceneはエンジンであり、コアです。ESはこのエンジンを便利にするためのもので、実際に使用しています。

同様のフレームワークsolr

githubは以前全文検索にsolrを使用していましたが、
基本的にESがsolrを上回っていることを示すESに置き換えられました
後に、プロジェクトでSolrがまだ使用されていると聞いた人はほとんどいませんこれは基本的にESです。

インストールする

単一インスタンスESをインストールする

まず、esバージョンには1.x、2.x、5.x、6.x、7.xがあり
ます最新のものを使用し、5.xより前のものは使用しないようにしてください

https://www.elastic.co/cn/downloads/elasticsearch
esの公式Webサイトにアクセスして、ダウンロードしてインストールします(jdk環境が必要です。例:1.8)
。localhost:9100にアクセスします。

ビジュアルページヘッドプラグインをインストールする

ダウンロード:https://github.com/mobz/elasticsearch-headに
はノード環境が必要です。例:8.2

npm install install
npm run start

他の視覚的なプラグインがあり、基本的にダウンロードしてインストールします。構成URLを使用できます。自分で検索してください

ヘッドのクロスドメイン問題を解決するためにes構成を変更します

es config / elasticsearch.ymlファイルの下で、
ファイルの最後次のコンテンツを追加ます

http.cors.enable: true
http.cors.allow-origin: "*"

es
ページとヘッドページをそれぞれ起動して、localhost:9100 アクセスします。

分散クラスターESをインストールする

1つのマスターノード+ 2つのスレーブノード

1.マスターノード設定
esのconfig / elasticsearch.ymlファイルは
、現在のサービスがマスターノードであることを示す次のコンテンツをファイルの最後に追加します

# 集群名字
cluster.na zhangsan
# 节点名字为master
node.name: master
# 指定当前节点为master
node.master: true
# 绑定本地ip
network.host: 127.0.0.1

マスター
2を開始します。スレーブノードの構成
インストールパッケージ情報をコピーし、スレーブの
es config / elasticsearch.ymlファイルとして、
ファイルの最後次のコンテンツを追加します。つまり、現在のサービスはスレーブノードです。

# 集群名字,这个必须和master节点的集群名字一致
cluster.na zhangsan
# 节点名字为slave01,多个节点就slave02,slave03...
node.name: slave01

# 绑定本地ip
network.host: 127.0.0.1
# 配置slave的端口,es默认端口是9200,我们让master是默认的9200
http.port: 9201
# 配置这个,为了能找到master
dicxovery.zen.ping.unicast.host: ["127.0.0.1"]

slave01、slave02を起動します。

ESのいくつかの基本的な概念

索引

同じ属性を持つドキュメントのコレクションは
、mysqlデータベースに相当します

タイプ

インデックスは1つ以上のタイプを定義でき、ドキュメントは
mysqlテーブルと同等のタイプに属している必要があります。データベースには1つ以上のテーブルが存在でき、レコードの行はテーブルに属している必要があります

ドク

ドキュメントは、インデックスを作成できる基本的なデータユニットであり
、mysqlのレコードの行に相当します

シャーディング

各インデックスには複数のシャードがあり、各シャードはluceneインデックスです。
インデックス作成すると、デフォルトで5つのシャードが作成されます
。シャードの数は、インデックスの作成時に指定する必要があり、後で変更することはできません
。mysqlデータシャーディング同等です

バックアップする

シャードをコピーして
シャードバックアップを完了します。インデックスを作成すると、デフォルトでバックアップが作成されます。
バックアップは後で変更できます。これは
、mysqlデータバックアップ同等です。

統合されたスプリングブーツ

Esは、一連のRESTful APIインターフェースの
スプリングブート統合を提供します。また、各インターフェースのパラメーターを構築して実行するコードも提供します。

ワードブレーカーなども設置されており、これが実はluceneの知識ポイントです。

最後に言う

オンラインチュートリアルによると、ESサービスをすばやくセットアップでき、プロジェクトとの統合は難しくありません。

ESがフルテキスト検索を実行できる理由を見つけるのは困難です。実際、Luceneは依然として回避できません。Luceneインデックスの学習が最優先事項です。

アプリケーションの場合、ポイントはESが何ができるか、何が得意か、いつ使用するかを知ることです。

私は要約しました:それは大量のデータの全文検索です。

この本を読むことをお勧めします:LuceneからElasticsearch全文検索の戦闘まで
ここに画像の説明を挿入

元の記事203件を公開 賞賛された186件 210,000回

おすすめ

転載: blog.csdn.net/java_zhangshuai/article/details/105039738