ElasticSearch Hello Worldの例
ElasticSearch
は、オープンソースエンタープライズRESTベースのリアルタイム検索/分析エンジンです。これはコアの検索機能で、Apache Luceneを使用して構築されていますが、他の多くの機能をサポートしています。
これはJava言語で書かれています。 Store、Index、Search、Analyze Dataをリアルタイムでサポートしています。 MongoDBと同様に、ElasticSearchはDocument-based NoSQL Data Storeです。
建築
** バルク操作をサポート
-
すぐにチャートとダッシュボードを構築する
-
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の略です。
-
注** お客様のユースケースは、https://www.elastic.co/use-casesで見つけることができます
1. ElasticSearchをローカルにインストールする
-
注** +私たちが知っているように、ElasticSearchはJavaで書かれています。したがって、システムパスにJava/JREを使用する必要があります。 Java環境を正しくインストールして設定してください。
ElasticSearchをローカルファイルシステムにインストールするには、以下の手順に従ってください。
1.2
Windows
-
Zipファイルをローカルファイルシステムにダウンロードして解凍します:
elasticsearch-5.2.1.zip
** F:\ elasticsearch-5.2.1へのZipファイルの抽出
-
環境変数の設定
PATH = F:\elasticsearch-5.2.1\bin
ElasticSearchを開始する
F:/>elasticsearch.bat
ブラウザーからhttp://localhost:9200でElasticSearchにアクセスします。 Ctrl Cを使用して、CMDプロンプトからElasticSearchを停止することができます。
1.3
Ubuntu Linux:tarファイルでインストールする
-
Tarファイルをダウンロードしてローカルファイルシステムに展開する
tar -xvf elasticsearch-5.2.1.tar.gz
ElasticSearchを開始する
$ ./elasticsearch
ブラウザーからhttp://localhost:9200でElasticSearchにアクセスする
1.4
Ubuntu Linux:コマンドでインストールする
-
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にアクセスする
-
注** ElasticSearchのデフォルトポート番号は「9200」です。必要に応じて、このポート番号を変更することができます。
1.5 ElasticSearchが開始されたら、デフォルトのURLにアクセスして、次のデフォルトのResponseを取得します
ブラウザ:http://localhost:9200
{ "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" }
-
注** + ElasticSearchのソースコードはhttps://github.com/elastic/elasticsearchで見つけることができます
2. ElasticSearch REST APIのURLの基礎
ElasticSearch REST APIのURLは、次の形式にする必要があります。
ここに
-
サーバーとは、「myserver」のようなサーバー名またはホスト名を意味します。時々
私たちは “myhost:9999″のようなノードポート番号を使います。
-
インデックスは小文字でなければなりません。それ以外の場合は例外をスローします。
-
Typeは小文字でも使用することをお勧めします。
このREST APIの使用法と例外について、次のセクションでいくつかの例を挙げて説明します。
3. ElasticSearchの用語
重要なElasticSearch用語については、Index、Type、Document、Key、Valueなどについてはほとんど議論しません。
-
3.1 ElasticSearchのインデックスとは?** ElasticSearchでは、インデックスはドキュメントの集合です。たとえば、「書店」はドキュメントです。インデックスは、ドキュメントのインデックス作成、検索、更新、削除に使用されます。小文字でなければなりません。
インデックスは、リレーショナルデータベースワールドのデータベースと似ています。
-
3.2 ElasticSearchでのタイプとは何ですか?** + ElasticSearchでは、タイプは類似したドキュメントのカテゴリです。つまり、一連の類似したドキュメントをタイプにまとめることができます。現実世界では知っているように、 “書店”にはさまざまな種類の品目が含まれています: “書物”、コレクションペン、鉛筆、CDなど。同じように、 “書店”のドキュメント書籍、ペン、CDなどの種類のコレクションを含む
Typeは、リレーショナルデータベースの世界の表と同様です。
-
3.3 ElasticSearchのドキュメントとは何ですか?** + ElasticSearchでは、ドキュメントはタイプのインスタンスです。それは、キーと値の見本市を持つデータを含んでいます。たとえば、 “title”: “Functional Programming in Java”は、Key of:Type of Document: “Books”の価値見本市です。各ドキュメントにはIDがあります。
ドキュメントは、リレーショナルデータベースの世界のテーブルの行と似ています。
キーは列名で、値は列値です。
4. ElasticSearchコマンドの基本
私たちが知っているように、ElasticSearchは、CRUD(Create Read Update Delete)操作をサポートするRESTベースのAPI(JSON over HTTPプロトコル)をサポートしています。 HTTPメソッドを使用して操作を実行します。
| =========================================== =========== | HTTPリクエストMothod |使用法| GET | ElasticSearch | POSTからデータを取得または選択または読み込む| DELETE | ElasticSearchから既存のデータを削除または削除する| ================================= =================================
-
注意** ElasticSearch操作をテストするには、POSTMAN、Fiddler、CURLコマンド、SenseなどのRESTクライアントを使用できます。https://chrome.google.com/webstore/search/POSTMAN?hl=enを使用します-US[Google Chrome POSTMAN]を使用してElasticSearch REST APIを調べます。 Chrome拡張機能としてPOSTMANまたはSenseをインストールできます。
5. ElasticSearch CRUD操作
ElasticSearchを使用してMkyong.comのウェブサイトの検索機能を開発し、投稿の詳細、著者の詳細などを検索しましょう。
-
5.1 CREATE操作例** 新しい文書を `/techfou/posts/1001`と以下のRequest Dataを挿入するには:
{ "title": "Java 8 Optional In Depth", "category":"Java", "published__date":"23-FEB-2017", "author":"Rambabu Posa" }
ここで1001はドキュメントIDです。一意に識別するために使用されます。
リンク://wp-content/uploads/2017/03/elasticsearch-4.png[
]
説明: –
-
新しいドキュメントを作成するには、HTTP POSTリクエストメソッドを使用します。
-
ノード:ポート番号:http://localhost:9200
-
インデックス名:techfou
-
タイプ名:投稿
-
リクエストボディタイプをJSONまたはリクエストヘッダーとして追加: “Content-Type”:
“application/json”
** レスポンスの “SEND”ボタンをクリックしてください。
-
レスポンスデータには以下のKey:Valueのペアがあります。
"__index":"mkyong" "__type":"posts" "result":"created" "created":true
CMDプロンプトで以下のログを見ることができます。
….[2017-02-26T21:10:33,941][INFO][o.e.c.m.MetaDataCreateIndexService][aH4GiIP][mkyong]creating index, cause[auto(index api)], templates[], shards[5]/[1], mappings[][2017-02-26T21:10:35,790][INFO][o.e.c.m.MetaDataMappingService][aH4GiIP][mkyong/KJsGZgF-Try0k4OHWAgARQ]create__mapping[posts]….
次のドキュメントを同じ方法で挿入します。
"/mkyong/posts/1002" { "title": "Elastic Search Basics", "category":"ElasticSearch", "published__date":"03-MAR-2017", "author":"Rambabu Posa" } "/mkyong/posts/1003" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring", "published__date":"11-MAR-2017", "author":"Rambabu Posa" } "/mkyong/posts/1004" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring Boot", "published__date":"23-MAR-2017", "author":"Rambabu Posa" }
-
5.2 READ操作の例** ElasticSearchからデータを読み込み、照会または選択するには、REAT API URLの最後に “__search”を使用する必要があります。
リンク://wp-content/uploads/2017/03/elasticsearch-5.png[
]
説明: –
-
あなたはURLに “__search”を見ることができます。
-
レスポンスが表示されます:「合計」:4(そのインデックスで4つのレコードが見つかりました。
タイプ。)
-
5.3クエリパラメータでのREAD操作例** +クエリで “?q =:”構文を使用してクエリパラメータを使用して、レコードをフィルタリングすることができます。
リンク://wp-content/uploads/2017/03/elasticsearch-6.png[
]
説明: –
-
レスポンスデータには以下のKey:Valueのペアがあります。それ
この検索で見つかったレコードを合計1件表示します。
"total":"1" "__id":"1002"
-
5.4 UPDATE操作例** 既存のDocumentデータを以下のように更新しますか?
リンク://wp-content/uploads/2017/03/elasticsearch-7.png[
]
説明: –
-
レスポンスデータには以下のKey:Valueのペアがあります。それ
Documentは更新されますが、作成されません。
"result":"updated" "created":"false"
同じドキュメントをチェックする
リンク://wp-content/uploads/2017/03/elasticsearch-8.png[
]
-
5.5 DELETE操作例** `__id = 1004`の文書を1つ削除しますか?
リンク://wp-content/uploads/2017/03/elasticsearch-9.png[
]
説明: –
-
レスポンスデータには以下のKey:Valueのペアがあります。それ
ドキュメントが正常に削除されたことを通知します。
"result":"deleted" "successful":"1"
6.インデックスは小文字でなければならない
前述したように、Indexは小文字でなければなりません。それ以外の場合、次のようなエラーが発生します。
リンク://wp-content/uploads/2017/03/elasticsearch-10.png[
]
我々はIndex: “Mkyong”を小文字で使用しないので、非常に意味のあるエラーメッセージを出します: “無効なインデックス名[Mkyong]、小文字でなければなりません”。
-
注意** タイプは大文字でもよいが、推奨しない。