ElasticSearch Hello Worldの例
ElasticSearchは、オープンソースのエンタープライズRESTベースのリアルタイム検索および分析エンジンです。 コアの検索機能はApache Luceneを使用して構築されていますが、他の多くの機能をサポートしています。
Java言語で書かれています。 リアルタイムでのデータの保存、索引付け、検索、分析をサポートします。 MongoDBと同様に、ElasticSearchもドキュメントベースのNoSQLデータストアです。
Note
ElasticSearch Webサイト:www.elastic.co。 ElasticSearchの最新バージョンは5.2.1で、2017年2月14日にリリースされました。
ElasticSearchの機能:-
-
オープンソース
-
全文シンプルで強力な検索をサポート
-
RESTベースのAPI(JSON over HTTP)をサポート
-
リアルタイム検索と分析をサポート
-
定義により、分散
-
マルチテナンシー機能をサポート
-
クラウド環境とビッグデータ環境をサポート
-
クロスプラットフォームをサポート
-
非正規化されたNoSQLデータストア
ElasticSearchの利点または利点:-
-
オープンソース
-
REST APIを使用した軽量
-
高可用性。 簡単で高度な拡張性
-
データのキャッシュをサポート
-
スキーマフリー
-
高速検索パフォーマンス
-
構造化データとUNStructuredデータの両方をサポート
-
分散、シャーディング、レプリケーション、クラスタリング、マルチノードアーキテクチャをサポート
-
一括操作をサポート
-
すぐにチャートとダッシュボードを作成
ElasticSearchの欠点または制限:-
-
MapReduce操作をサポートしていません
-
プライマリデータストアとしては役に立たない
-
ACID準拠のデータストアではありません
-
トランザクションおよび分散トランザクションをサポートしていません
-
組み込みの認証または承認機能はありません
ElasticSearchを使用している人気のあるクライアント:-
-
Github.com, Quora.com, Stackoverflow.com
-
eBay、DELL、Cisco、Mozilla、Wikimedia
-
Netflix、Symatics、Facebook
-
英国HMRC(HM歳入および税関)
たとえば、Github.comはElasticSearchを使用してファイル、履歴、チケット番号などを検索します。 ほとんどの企業は、ELKスタックを使用してログを管理し、システムを監視しています。 ELKはElasticSearch LogstashとKibanaの略です。
Note
https://www.elastic.co/use-casesでより多くのお客様のユースケースを見つけることができます
1. ElasticSearchをローカルにインストールする
Note
ご存知のように、ElasticSearchはJavaで記述されています。 そのため、システムパスにJava / JREを使用する必要があります。 Java環境を適切にインストールして設定してください。
ElasticSearchをローカルファイルシステムにインストールするには、次の手順に従ってください。
1.1 Download ElasticSearch from https://www.elastic.co/downloads/elasticsearch
1.2 Windows
-
Zipファイルをダウンロードしてローカルファイルシステムに抽出します:elasticsearch-5.2.1.zip
-
ZipファイルをF:\ elasticsearch-5.2.1に抽出しました
-
環境変数を設定する
PATH = F:\elasticsearch-5.2.1\bin
ElasticSearchを開始します
F:/>elasticsearch.bat
ブラウザからhttp://localhost:9200でElasticSearchにアクセスします。 Ctrl + Cを使用して、CMDプロンプトからElasticSearchを停止できます。
1.3 Ubuntu Linux: Install with tar file
-
Tarファイルをダウンロードしてローカルファイルシステムに抽出する
tar -xvf elasticsearch-5.2.1.tar.gz
ElasticSearchを開始します
$ ./elasticsearch
ブラウザからhttp://localhost:9200でElasticSearchにアクセスします
1.4 Ubuntu Linux: Install with commands
-
次のコマンドを実行してElasticSearchをダウンロードします
$ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.1.deb
ElasticSearch DEBファイル:elasticsearch-5.2.1.debをダウンロードします
次のdpkgコマンドを実行してElasticSearchをインストールします
$ sudo dpkg -i elasticsearch-5.2.1.deb
デフォルトでは、ElasticSearchを「/ usr / share / elasticsearch」にインストールします。
ElasticSearchを開始します
$ ./elasticsearch
ブラウザからhttp://localhost:9200でElasticSearchにアクセスします
Note
ElasticSearchのデフォルトのポート番号は9200
です。 必要に応じて、このポート番号を変更できます。
1.5 After ElasticSearch is started, access the default URL, we will get the following default Response
{ "name" : "rBvi0Hs", "cluster_name" : "elasticsearch", "cluster_uuid" : "kOQQ_nqfTW-b4vQ00XSvdg", "version" : { "number" : "5.2.1", "build_hash" : "db0d481", "build_date" : "2017-02-09T22:05:32.386Z", "build_snapshot" : false, "lucene_version" : "6.4.1" }, "tagline" : "You Know, for Search" }
Note
ElasticSearchのソースコードはhttps://github.com/elastic/elasticsearchにあります
2. ElasticSearch REST API URLの基本
ElasticSearch REST API URLは次の形式に従う必要があります。
Here
-
サーバーとは、「myserver」などのサーバー名またはホスト名を意味します。 「myhost:9999」のようなノード+ポート番号を使用することがあります。
-
インデックスは小文字である必要があります。そうでない場合、例外がスローされます。
-
小文字でもTypeを使用することをお勧めします。
このREST APIの使用と例外については、次のセクションでいくつかの例を使用して詳しく説明します。
3. ElasticSearchの用語
いくつかの重要なElasticSearch用語について説明します:Index
、Type
、Document
、Key
、Value
など。
3.1 What is an Index in ElasticSearch?
ElasticSearchでは、インデックスはドキュメントのコレクションです。 たとえば、「bookstore」はドキュメントです。 インデックスは、ドキュメントのインデックス作成、検索、更新、削除に使用されます。 小文字でなければなりません。
インデックスは、関係データベースの世界のデータベースに似ています。
3.2 What is a Type in ElasticSearch?
ElasticSearchでは、タイプは類似したドキュメントのカテゴリです。 つまり、類似したドキュメントのセットをタイプにグループ化できます。 実世界で知られているように、「書店」にはさまざまな種類のアイテムが含まれています。「本」のコレクション、ペン、鉛筆、CDなどのコレクションです。 同様に、「bookstore」ドキュメント(1種類のインデックス)にはタイプのコレクションを含めることができます:本、ペン、CDなど。
タイプは、リレーションデータベースワールドのテーブルに似ています。
3.3 What is a Document in ElasticSearch?
ElasticSearchでは、ドキュメントはタイプのインスタンスです。 これには、キーと値のフェアを持つデータが含まれています。 たとえば、「title」:「Functional Programming In Java」は、Type:「Books」のDocumentのKey:Valueフェアです。 各ドキュメントにはIDがあります。
ドキュメントは、リレーションデータベースワールドのテーブルの行に似ています。 キーは列名で、値は列値です。
4. ElasticSearchコマンドの基本
ご存知のように、ElasticSearchはRESTベースのAPI(HTTPプロトコル経由のJSON)をサポートして、CRUD(読み取り、更新、削除の作成)操作をサポートします。 HTTPメソッドを使用して操作を実行します。
HTTPリクエストモトッド | 使用法 |
---|---|
GET |
ElasticSearchからデータを取得、選択、または読み取るには |
POST |
ElasticSearchへのデータを作成または更新するには |
PUT |
ElasticSearchへのデータを作成または更新するには |
DELETE |
ElasticSearchから既存のデータを削除または削除するには |
Note
ElasticSearch操作をテストするには、POSTMAN、Fiddler、CURLコマンド、Senseなどの任意のRESTクライアントを使用できます。 Google Chrome
POSTMANを使用してElasticSearch RESTAPIを調べます。 You can install POSTMAN or Sense as Chrome Extensions.
5. ElasticSearch CRUDオペレーション
ElasticSearchを使用して投稿の詳細、著者の詳細などを検索するMkyong.com Webサイトの検索機能を開発しましょう。
5.1 CREATE Operation Example/techfou/posts/1001
と次のリクエストデータを含む新しいドキュメントを挿入するには:
{ "title": "Java 8 Optional In Depth", "category":"Java", "published_date":"23-FEB-2017", "author":"Rambabu Posa" }
ここで、1001はドキュメントIDです。 一意に識別するために使用されます。
説明:-
-
新しいドキュメントを作成するには、HTTP POSTリクエストメソッドを使用します。
-
ノード:ポート番号:http://localhost:9200
-
インデックス名:techfou
-
タイプ名:投稿
-
リクエストの本文タイプをJSONとして、またはリクエストヘッダーを追加します:“ Content-Type”:“ application / json”
-
応答への「送信」ボタンをクリックします。
-
応答データで次のキーと値のペアを確認できます。
"_index":"example" "_type":"posts" "result":"created" "created":true
CMDプロンプトで次のログを確認できます。
[2017-02-26T21:10:33,941][INFO ][o.e.c.m.MetaDataCreateIndexService] [aH4GiIP] [example] creating index, cause [auto(index api)], templates [], shards [5]/[1], mappings [] [2017-02-26T21:10:35,790][INFO ][o.e.c.m.MetaDataMappingService] [aH4GiIP] [example/KJsGZgF-Try0k4OHWAgARQ] create_mapping [posts]
同じ方法で次のドキュメントを挿入してください。
"/example/posts/1002" { "title": "Elastic Search Basics", "category":"ElasticSearch", "published_date":"03-MAR-2017", "author":"Rambabu Posa" } "/example/posts/1003" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring", "published_date":"11-MAR-2017", "author":"Rambabu Posa" } "/example/posts/1004" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring Boot", "published_date":"23-MAR-2017", "author":"Rambabu Posa" }
5.2 READ Operation Example
ElasticSearchからデータを読み取ったり、クエリしたり、選択したりするには、REAT APIURLの最後に「_search」を使用する必要があります。
説明:-
-
URLで「_search」を確認できます。
-
応答は次のように表示されます:「合計」:4(そのインデックスとタイプで見つかった合計4レコード。)
5.3 READ Operation With Query Parameters Example
クエリで「?q =:」構文を使用してクエリパラメータを使用し、レコードをフィルタリングできます。
説明:-
-
応答データで次のキーと値のペアを確認できます。 この検索で見つかった合計1つのレコードを示します。
"total":"1" "_id":"1002"
5.4 UPDATE Operation Example
以下に示すように、既存のドキュメントデータを更新します。
説明:-
-
応答データで次のキーと値のペアを確認できます。 ドキュメントが更新されたが、作成されていないことを通知します。
"result":"updated" "created":"false"
同じドキュメントを確認する
5.5 DELETE Operation Example_id = 1004
のドキュメントを1つ削除したい
説明:-
-
応答データで次のキーと値のペアを確認できます。 ドキュメントが正常に削除されたことを示します。
"result":"deleted" "successful":"1"
6. インデックスは小文字でなければなりません
先ほど説明したように、インデックスは小文字でなければなりません。 それ以外の場合、次のようにエラーがスローされます。
小文字のインデックス:「Mkyong」を使用していないため、非常に意味のあるエラーメッセージ「無効なインデックス名[Mkyong]、小文字でなければなりません」がスローされます。
Note
タイプは大文字の場合がありますが、お勧めしません。