検索
ホームページバックエンド開発C#.Net チュートリアルエラスティックサーチとは何ですか? Elasticsearch はどこで使用できますか?

  • Elasticsearch バージョン: 5.4

  • Elasticsearch クイックスタート パート 1: Elasticsearch の開始

  • Elasticsearch クイックスタート パート 2: Elasticsearch と Kibana のインストール

  • Elasticsearch クイックスタート パート 3: Elasticsearch のインデックスとドキュメント操作

  • Elasticsearch クイック スタート パート 4: Elasticsearch ドキュメント クエリ

Elasticsearch は、拡張性の高いオープンソースの全文検索および分析エンジンです。大規模なデータを迅速かつほぼリアルタイムで保存、検索、分析できます。これは通常、複雑な検索機能と要件を持つアプリケーションに強力なサポートを提供するための基礎となるエンジン/テクノロジとして使用されます。

Elasticsearch は次の場所で使用できます:

  1. 顧客が販売中の商品を検索できるようにするために、オンライン ストアの Web サイトがあるとします。この場合、Elasticsearch を使用して製品カタログと在庫全体を保存し、検索を提供したり、いくつかの提案を自動的に提供したりできます。

  2. ログやトランザクション データを収集し、分析やマイニングを通じて傾向、統計、概要、または異常を見つけたいとします。この場合、LogStash (Elasticsearch/Logstash/Kibanaスタックの一部) を使用してデータを収集、集約、解析し、このデータを LogStash を通じて Elasticsearch に渡すことができます。 Elasticsearch がデータを取得したら、興味のある情報を検索して集約できます。

  3. 価格アラート プラットフォームを運営し、価格に詳しい顧客に「特定の電子機器の購入に興味があります。来月以内に x ドルより低い価格の販売者がいる場合」などのルールを指定させるとします。 , 取得したいのですが「通知」します。この場合、販売者の価格を Elasticsearch に送信し、逆検索 (フィルター) を使用して、価格の変更を顧客のクエリと照合し、一致が見つかったら顧客に通知することができます。

  4. 分析 (ビジネス インテリジェンス) のニーズがあり、大量 (数百万または数十億のレコードを考えてください) のデータの中からアドホックな問題を迅速に調査、分析、視覚化して見つけたいという願望があるとします。この場合、Elasticsearch を使用してデータを保存し、次に Kibana (Elasticsearch スタックの一部) を使用してカスタム ダッシュボードを構築し、重要なデータを視覚化できます。さらに、Elasticsearch 集計機能を使用して、データに基づいて複雑なビジネス インテリジェンス クエリを実行できます。

このチュートリアルの残りの部分では、Elasticsearch の起動と実行プロセスを説明し、データのインデックス作成、検索、変更などの基本的な操作をいくつか紹介します。このチュートリアルを終えると、Elasticsearch とは何か、そしてそれがどのように機能するのかをより深く理解できるようになります。洗練された検索アプリケーションを構築し、データから有用なものを発見するためにこれを使用するインスピレーションを得ていただければ幸いです。

基本概念 (基本概念)

Elasticsearch の中核となる概念がいくつかあります。 これらの概念を最初から理解することは、後の学習に非常に役立ちます。

準リアルタイム (NRT)

Elasticsearch は、準リアルタイムの検索プラットフォームです。これは、ドキュメントのインデックスが作成されてから検索可能になるまでに、わずかな遅延 (通常は 1 秒) しかないことを意味します。

クラスター (クラスター)

クラスターは、すべてのデータを保存するために結合され、すべてのノードでインデックス作成と検索操作を実行できる 1 つ以上のノード (サーバー) の集合です。クラスターは一意の名前で識別され、デフォルトでは「elasticsearch」になります。ノードは 1 つのクラスターにのみ所属できるため、クラスター名に従ってクラスターに参加します。だから名前は大事なんです。

異なる環境で同じクラスター名を使用しないでください。使用すると、間違ったクラスターが追加される可能性があります。たとえば、クラスター名 logging-dev 、logging-stage、logging-prod を開発環境、ステージング環境、運用環境でそれぞれ使用できます。

ノードが 1 つだけあるクラスターは有効で完璧であることに注意してください。複数の独立したクラスターを作成し、それぞれに独自の一意のクラスター名を付けることもできます。

ノード (ノード)

ノードは、クラスターの一部であり、データを保存し、クラスターのインデックス作成と検索に参加する単一のサーバーです。クラスターと同様に、ノードも一意の名前によって区別されます。デフォルト名はランダムな UUID (Universally Unique IDentifier) であり、サーバーの起動時にノードに設定されます。デフォルト値を使用したくない場合は、ノード名をカスタマイズすることもできます。名前は、クラスター内の各サーバーに対応するノードを識別するのに役立つため、管理者にとって非常に重要です。

クラスター名を設定することで、ノードは指定されたクラスターに参加できます。デフォルトでは、ノードは elasticsearch というクラスターに参加します。これは、ネットワーク内で多数のノードを起動し、それらがすべて相互に通信できる場合、自動的に elasticsearch クラスターというクラスターに追加されます。 。

インデックス (インデックス)

インデックス は、特定の類似した特徴を持つドキュメントのコレクションです。たとえば、顧客データ インデックス、製品カタログ インデックス、注文データ インデックスなどです。インデックスは、ドキュメントのインデックス作成、検索、更新、削除時に使用される名前 (すべて小文字である必要があります) によって識別されます。単一クラスター内で、必要な数のインデックスを定義できます。

Type

インデックスは 1 つ以上のタイプを定義できます。タイプとは、インデックスの論理的なカテゴリ/パーティションであり、どのようなものであるかは任意です。通常、タイプは、共通のフィールドのセットを持つドキュメントに対して定義されます。たとえば、ブログ プラットフォームでは、すべてのデータが 1 つのインデックスに保存される場合があります。このインデックスでは、ユーザー データ タイプ、ブログ データ タイプ、およびコメント データ タイプを定義できます。

ドキュメント

ドキュメントはインデックスを作成できる基本単位です。たとえば、ドキュメントを使用して顧客に関するデータを保存したり、単一の製品に関するデータを保存したり、単一の注文に関するデータを保存したりできます。ドキュメントは JSON を使用して表現されます。多数のドキュメントをインデックス/タイプに保存できます。ドキュメントは基本的にインデックスに格納されますが、実際にはインデックスが作成され、インデックス内のタイプに割り当てられることに注意してください。

シャードとレプリカ

インデックスには大量のデータが保存される場合があり、そのデータは単一ノードのハードディスク容量を超える可能性があります。たとえば、インデックスには 10 億のドキュメントが保存され、1 TB のハード ディスク領域が占有されます。このような大量のデータを保存するには、1 つのノードのハード ディスクでは十分ではない可能性があります。サーバーの検索リクエストの処理速度。

この問題を解決するために、elasticsearchはインデックスを細分化するシャーディング機能を提供します。インデックスを作成するときは、必要なシャードの数を簡単に定義できます。各シャード自体にはインデックスのすべての機能があり、クラスター内の任意のノードに保存できます。

シャーディングは 2 つの主な理由で重要です:

  • コンテンツ ボリュームを水平方向に分割/スケーリングできます

  • 複数のノードのシャード間で操作を並行して分散できるため、パフォーマンスを向上させたり、スループット。

シャード分散のメカニズム、およびそのドキュメントがどのように検索リクエストに集約されるかは、Elasticsearch によって完全に管理され、ユーザーには透過的です。

いつでも障害が発生する可能性があるネットワーク/クラウド環境では、シャーディングは非常に役立ちます。シャード/ノードがオフラインになったり消失したりするのを防ぐために、フェイルオーバー メカニズムを強くお勧めします。これを行うために、elasticsearch を使用して、インデックスのシャードの 1 つ以上のコピー (いわゆる複製されたシャード、または単にレプリカ) を作成できます。

レプリカは 2 つの主な理由で重要です:

  • シャード/ノードに障害が発生した場合に高可用性を提供するため。したがって、レプリカは、コピー元のオリジナル/プライマリ シャードと同じノードには割り当てることができないことに注意することが重要です。

  • すべてのレプリカに対して並行して検索を実行できるため、検索ボリューム/スループットをスケールすることができます。

要約すると、各インデックスは複数のシャードに分割できます。各インデックスは、ゼロ回 (コピーなし) または複数回複製することもできます。レプリケートされると、各インデックスにはプライマリ シャード (レプリケートされた元のシャード) とセカンダリ シャード (プライマリ シャードのコピー) が含まれます。シャードとレプリカの数は、インデックスの作成時にインデックスごとに定義できます。インデックスを作成した後は、いつでもレプリカの数を動的に変更できますが、その後シャードの数を変更することはできません。

デフォルトでは、各インデックスには 5 つのプライマリ シャードと 1 つのレプリカ シャードが割り当てられます。つまり、クラスター内に 2 つのノードがある場合、インデックスには 5 つのプライマリ シャードと 5 つのレプリカ シャードがあり、合計 10 のシャードが存在します。

各 elasticsearch シャードは Lucene インデックスです。LUCENE-5843 では、最大 2,147,483,519 (= Integer.MAX_VALUE - 128) 個のドキュメントを含めることができます。シャード サイズを監視するには、_cat/shards API を使用できます。 。

概要

1. 検索にリレーショナル データベースを使用してみてはいかがでしょうか?検索の実装にはデータベースが使用されるため、パフォーマンスが非常に低くなり、単語の分割検索は実行できません。

2. 全文検索、転置インデックス、Lucene とは何ですか?すでに前の方がまとめていますので、ぜひ参考にしてください 【段階的に全文検索を教えます】Apache Lucene の下調べ

3. Elasticsearch の特徴

  • クラスターに分散して大量のデータを処理できるほぼリアルタイムで

  • ユーザーにとっては、箱から出してすぐに使用するのが非常に簡単です。データ量が大きくなければ、操作はそれほど複雑ではありません。

  • には、全文検索、同義語処理、関連性ランキング、複雑なデータ分析、準実数など、リレーショナルデータベースにはない機能があります。大量のデータの時間処理

  • Lucene に基づいて、複雑さを隠し、シンプルで使いやすい RESTful API インターフェイスと Java API インターフェイスを提供します

4。クラスター: クラスターには複数のノードが含まれており、各ノードがどのクラスターに属するかは構成によって決まります (デフォルトは elasticsearch)

  • ノード: クラスター内のノードは、クラスター内の「elasticsearch」という名前のクラスターに自動的に参加します。デフォルト。 elasticsearch サービスはノードです。たとえば、マシンが 2 つの es サービスを開始すると、2 つのノードが存在します。

  • インデックス: mysql データベースに相当するインデックスには、同様の構造を持つドキュメント データの束が含まれています。

  • タイプ: インデックス内の論理データ分類である mysql テーブルに相当するタイプ。

  • ドキュメント: ドキュメントは、MySQL テーブルのレコードの行に相当し、ES の最小のデータ単位です。

  • シャード: 単一のマシンでは大量のデータを保存できません。ES はインデックス内のデータを複数のシャードに分割し、複数のサーバーに分散して保存できます。

  • レプリカ: レプリカ。ダウンタイムとシャードの損失を防ぐため、最小の高可用性構成は 2 サーバーです。

以上がエラスティックサーチとは何ですか? Elasticsearch はどこで使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
.NET内のC#コード:プログラミングプロセスの調査.NET内のC#コード:プログラミングプロセスの調査Apr 12, 2025 am 12:02 AM

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#.NET:コアの概念とプログラミングの基礎を探るC#.NET:コアの概念とプログラミングの基礎を探るApr 10, 2025 am 09:32 AM

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

テストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストテストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストApr 09, 2025 am 12:04 AM

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

高度なC#.NETチュートリアル:次のシニア開発者インタビューをエース高度なC#.NETチュートリアル:次のシニア開発者インタビューをエースApr 08, 2025 am 12:06 AM

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

c#.netインタビューの質問と回答:専門知識を高めるc#.netインタビューの質問と回答:専門知識を高めるApr 07, 2025 am 12:01 AM

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NETを使用したマイクロサービスの構築:建築家向けの実用的なガイドC#.NETを使用したマイクロサービスの構築:建築家向けの実用的なガイドApr 06, 2025 am 12:08 AM

C#.NETは、その強力なエコシステムと豊富なサポートのため、マイクロサービスを構築するために人気のある選択肢です。 1)asp.netcoreを使用してRestfulapiを作成して、順序の作成とクエリを処理します。 2)GRPCを使用して、マイクロサービス間の効率的な通信を実現し、注文サービスを定義および実装します。 3)Dockerコンテナ化されたマイクロサービスを介して展開と管理を簡素化します。

C#.NETセキュリティベストプラクティス:一般的な脆弱性の防止C#.NETセキュリティベストプラクティス:一般的な脆弱性の防止Apr 05, 2025 am 12:01 AM

C#および.NETのセキュリティベストプラクティスには、入力検証、出力エンコード、例外処理、認証と承認が含まれます。 1)正規表現または組み込みのメソッドを使用して入力を検証して、悪意のあるデータがシステムに入るのを防ぎます。 2)XSS攻撃を防ぐための出力エンコード、httputility.htmlencodeメソッドを使用します。 3)例外処理により、情報の漏れが回避され、エラーが記録されますが、詳細情報はユーザーに返されません。 4)ASP.Netidentityおよび請求に基づく許可を使用して、不正アクセスから申請を保護します。

C言語で:それはどういう意味ですかC言語で:それはどういう意味ですかApr 03, 2025 pm 07:24 PM

C言語におけるコロン( ':')の意味:条件付きステートメント:条件付き式とステートメントの分離ブロックループステートメント:初期化、条件付きおよび増分式のマクロ定義の分離:マクロ名とマクロ値の分離単一行コメント:コメントアレイの寸法としてのコロンから行までのコンテンツを表す:アレイの寸法を指定する

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン