ELK_Elasticsearch の基本的な概要

目次

1. 検索とは何ですか?

2. データベース検索のデメリット

3. 全文検索、転置インデックス、Lucene

4. Elasticsearchとは

1. Elasticsearchの機能

2. Elasticsearchの使用シナリオ

3. Elasticsearchの特徴

5. elasticsearch の中心となる概念


1. 検索とは何ですか?

概念:ユーザーが希望のキーワードを入力すると、そのキーワードを含むすべての情報が返されます。

シーン:

1 インターネット検索: Google、Baidu、各種ニュースホームページ

2 サイト内検索 (垂直検索): エンタープライズ OA クエリの注文、人事、部門、電子商取引 Web サイトの製品の内部検索 (淘宝網、JD.com) シナリオ。

2. データベース検索のデメリット

問題が発生します:

  • 保管の問題。電子商取引 Web サイトに数億の商品がある場合、1 つのテーブルのデータが大きすぎる場合はテーブルを分割する必要があり、ディスク使用量が大きすぎる場合はデータベースを複数のデータベース (mycat) に分割する必要があります。
  • パフォーマンスの問題: 上記の問題を解決した後、「ラップトップ」などのキーワードをクエリすると、数億のデータの製品名フィールドが 1 行ずつスキャンされ、パフォーマンスが追いつきません。
  • 言葉は切り離せない。例えば、「ノートパソコン」で検索した場合、キーワードと全く同じデータしか検索できませんが、データ量が少ない場合、「ノートパソコン」で検索した場合、「コンピュータ」のデータを与えるべきでしょうか? 」をユーザーに伝えます。

3. 全文検索、転置インデックス、Lucene

全文検索

全文インデックス作成は、データベースに保存されている書籍全体または記事全体の内容情報を検索する技術です。全文中の関連する章、節、段落、文章、単語などの情報を必要に応じて取得でき、各種統計や分析も行えます。全文検索は通常、転置インデックスを使用して実装されます。

転置インデックス

転置インデックス。データが保存されると、単語の分割を通じて用語インデックス ライブラリが確立されます。図面を参照してください。

逆索引は、実際のアプリケーションで属性の値に基づいてレコードを検索する必要があることから生まれました。このようなインデックステーブルの各エントリは、属性値と、その属性値を有するレコードのアドレスとを含む。属性値はレコードによって決まるのではなく、属性値によってレコードの位置が決まるため、転置インデックスと呼ばれます。転置インデックスを持つファイルは、転置インデックス ファイル、または略して転置ファイルと呼ばれます。

ルシーン

これは、全文検索エンジンと検索アルゴリズム コードをカプセル化した jar パッケージです。開発にあたってはlucenのjarパッケージを導入し、APIを通じて検索関連業務を開発します。最下層はディスク上にインデックス ライブラリを構築します。

4. Elasticsearchとは

公式サイト:https://www.elastic.co/en/products/elasticsearch

1. Elasticsearch機能

分散型検索エンジンとデータ分析エンジン

検索:インターネット検索、ECサイト検索、OAシステム検索

データ分析: 電子商取引 Web サイトでは、過去 1 週間の書籍売上トップ 10 のカテゴリを確認します。ニュース Web サイトでは、過去 3 日間で最も読まれたキーワードのトップ 10 と世論分析を確認します。

全文検索、構造化検索、データ分析

全文検索: 製品名に java select * が含まれる書籍を、book_name が "%java%" のような書籍から検索します。

構造化検索: 春に分類される書籍を検索し、category_id='spring' の書籍から * を選択します。

データ分析: 各カテゴリに何冊の書籍があるかを分析し、カテゴリ ID ごとに書籍グループからカテゴリ ID、カウント (*) を選択します。

大量のデータをほぼリアルタイムで処理

分散: ES は、大量のデータを複数のサーバーに分散して保存し、取得し、並列クエリを実行して検索効率を向上させることができます。対照的に、Lucene はスタンドアロン アプリケーションです。

ほぼリアルタイム: データベースには何億ものデータ クエリがあり、1 回の検索に数時間かかるため、バッチ処理になります。ただし、es は大量のデータを数秒でクエリできるため、ほぼリアルタイムと呼ばれます。セカンドレベル。

2. Elasticsearchの使用シナリオ

外国:

  • Wikipedia、百度百科事典に似た、「ネットワーク レイヤ 7 プロトコル」の Wikipedia、全文検索、ハイライト、検索の推奨
  • Stack Overflow (外国のプログラム ディスカッション フォーラム) は、プログラマの投稿バーに相当します。問題が発生した場合は、上の投稿にアクセスしてください。熱心なネチズンが下の投稿に回答します。
  • GitHub (オープン ソース コード管理)、数千億行のコードを検索します。
  • ECサイト、商品検索
  • ログデータ分析、logstash がログを収集、ES が複雑なデータ分析を実行 (ELK テクノロジー、elasticsearch+logstash+kibana)
  • 商品価格監視 Web サイトでは、ユーザーが特定の商品の価格のしきい値を設定し、その値がしきい値を下回った場合に通知メッセージがユーザーに送信されます。たとえば、次の場合は「Java プログラミングのアイデア」の監視に登録します。価格が27元より低い場合はお知らせください、購入します。
  • BIシステム、ビジネスインテリジェンス(ビジネスインテリジェンス)。大手スーパーマーケットチェーンは、全国の店舗から送られてくるデータを分析し、各商品がどの季節に最も売れ、最も利益が高いかを分析します。コスト管理、店舗賃料、従業員の賃金、負債などの情報が分析されます。次の段階の戦略目標を展開するために。

国内:

Baidu 検索、最初のクエリでは es を使用します。

OA、ERPシステムのサイト内検索。

3. Elasticsearch特徴

スケーラビリティ: PB レベルのデータを処理する大規模分散クラスター (数百台のサーバー) テクノロジーは、大企業で使用できます。小規模企業はデータ量が少ないため、単一のマシンに展開することもできます。ビッグデータの分野は広く利用されています。

技術統合:全文検索、データ分析、分散関連技術の統合: lucene (全文検索)、商用データ分析ソフトウェア (BI ソフトウェア)、分散データベース (mycat)

シンプルな導入:すぐに使用できる多くのデフォルト構成は気にする必要がなく、解凍後直接実行できます。拡張する場合、さらにいくつかのインスタンスをデプロイするだけで済み、負荷分散と断片化移行はクラスター自体内で実装されます。

シンプルなインターフェース:言語を超えた対話には、Restful API を使用します。

強力な機能: Elasticsearch は、従来のデータベースを補完するものとして、全文検索、同義語処理、相関ランキングなど、データベースでは提供できない多くの機能を提供します。

5、elasticsearchのコアコンセプト

1. luceneelasticsearch関係

Lucene : lucene に基づいて直接開発された、非常に複雑で複雑な API である最も高度で強力な検索ライブラリ

Elasticsearch : lucene に基づいて、lucene の多くの基礎となる関数をカプセル化し、使いやすい RESTful API インターフェイスと、Java の高度なクライアント (Java 高レベル REST クライアント) や基礎となるクライアント (Java 低レベル REST など) のクライアントを多くの言語で提供します。クライアント)

2. elasticsearchの中心となる概念

NRT (準リアルタイム): ほぼリアルタイム

ふたつのやり方:

データの書き込み時: データは内部でセグメント化されてインデックスに入力されるため、1 秒後に検索されます。

ES で検索する場合: データの検索と分析には、結果が得られるまでに数秒かかります。

クラスター: クラスター

es インスタンスを開始する 1 つ以上のマシン クラスターが含まれます。通常、マシンには es インスタンスがあります。同じネットワーク内では、同じセット名を持つ複数の es インスタンスが自動的にクラスターを形成し、シャーディングやその他の動作のバランスが自動的に取られます。デフォルトのクラスター名は「elasticsearch」です。

ノード: ノード

各 es インスタンスはノードと呼ばれます。ノード名は自動的に割り当てられるか、手動で構成できます。

インデックス: インデックス

同様の構造を持つ文書データの束が含まれます。

インデックス作成ルール:

小文字のみ

\、/、*、?、"、<、>、|、#、スペース文字などの特殊記号は使用できません

バージョン 7.0 以降、コロンは含まれなくなりました

-、_、+ で始めることはできません

255 バイトを超えることはできません (バイトなので、マルチバイト文字も 255 の制限にカウントされることに注意してください)

 文書: 文書

es の最小のデータ単位。ドキュメントはデータベース内のレコードのようなものです。通常はjson形式で表示されます。複数の文書はインデックス (Index) に保存されます。

例: 書籍ドキュメント

{

  "書籍ID": "1",

  "book_name": "Javaプログラミングのアイデア",

  "book_desc": " Javaの基本構文から最も高度な機能 (詳細な[オブジェクト指向](https://baike.baidu.com/item/object-志向)の概念、マルチスレッド、自動プロジェクトまで)構築、単体テスト、デバッグなど)、この本はそれを簡単にマスターできるように段階的にガイドします。",

  "カテゴリID": "2",

  "カテゴリ名": "Java"

}

フィールド:フィールド

データベースの列 (列) と同様に、各ドキュメントに必要なフィールドを定義します。

タイプ: タイプ

各インデックスには 1 つ以上のタイプを含めることができます。タイプとは、インデックス内の論理的なデータ分類です。同じタイプのドキュメントはすべて同じフィールドを持ちます。

注: 6.0 より前のバージョンには型 (type) の概念があります。型はリレーショナル データベースのテーブルに相当します。ES 担当者は ES9.0 で型を完全に削除します。このチュートリアルのタイプは _doc です。

シャード: スライス

インデックス データが大きすぎる場合、インデックス内のデータは複数のシャードに分割され、各サーバーに分散して保存されます。大量のデータと高い同時実行性をサポートし、パフォーマンスとスループットを向上させ、複数のマシンの CPU を最大限に活用できます。

レプリカ: コピー

分散環境では、どのマシンがいつでもダウンする可能性があり、ダウンするとインデックスのシャードが利用できなくなり、インデックスを検索できなくなります。したがって、データのセキュリティを確保するために、各インデックスの断片化をバックアップし、別のマシンに保存します。少数のマシンがダウンしていても、es クラスターは引き続き検索できることを保証します。

通常、クエリと挿入を提供できるシャードはプライマリ シャードと呼ばれ、残りのシャードはレプリカ シャードと呼ばれます。

es6 がデフォルトで新しいインデックスを作成すると、5 つのシャードと 2 つのコピー、つまり 1 つのマスターと 1 つのバックアップ、合計 10 のシャードが存在します。したがって、es クラスターの最小サイズは 2 です。

6、elasticsearchコア コンセプトデータベース コア コンセプト

おすすめ

転載: blog.csdn.net/wanghaiping1993/article/details/128778255