ElasticSearch Hello Worldの例

ElasticSearch Hello Worldの例

image

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

image

ブラウザから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

ブラウザ: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"
}

Note
ElasticSearchのソースコードはhttps://github.com/elastic/elasticsearchにあります

2. ElasticSearch REST API URLの基本

ElasticSearch REST API URLは次の形式に従う必要があります。

image

Here

  • サーバーとは、「myserver」などのサーバー名またはホスト名を意味します。 「myhost:9999」のようなノード+ポート番号を使用することがあります。

  • インデックスは小文字である必要があります。そうでない場合、例外がスローされます。

  • 小文字でもTypeを使用することをお勧めします。

このREST APIの使用と例外については、次のセクションでいくつかの例を使用して詳しく説明します。

3. ElasticSearchの用語

いくつかの重要なElasticSearch用語について説明します:IndexTypeDocumentKeyValueなど。

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です。 一意に識別するために使用されます。

image

説明:-

  • 新しいドキュメントを作成するには、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」を使用する必要があります。

image

説明:-

  • URLで「_search」を確認できます。

  • 応答は次のように表示されます:「合計」:4(そのインデックスとタイプで見つかった合計4レコード。)

5.3 READ Operation With Query Parameters Example
クエリで「?q =:」構文を使用してクエリパラメータを使用し、レコードをフィルタリングできます。

image

説明:-

  • 応答データで次のキーと値のペアを確認できます。 この検索で​​見つかった合計1つのレコードを示します。

"total":"1"
"_id":"1002"

5.4 UPDATE Operation Example
以下に示すように、既存のドキュメントデータを更新します。

image

説明:-

  • 応答データで次のキーと値のペアを確認できます。 ドキュメントが更新されたが、作成されていないことを通知します。

"result":"updated"
"created":"false"

同じドキュメントを確認する

image

5.5 DELETE Operation Example
_id = 1004のドキュメントを1つ削除したい

image

説明:-

  • 応答データで次のキーと値のペアを確認できます。 ドキュメントが正常に削除されたことを示します。

"result":"deleted"
"successful":"1"

6. インデックスは小文字でなければなりません

先ほど説明したように、インデックスは小文字でなければなりません。 それ以外の場合、次のようにエラーがスローされます。

image

小文字のインデックス:「Mkyong」を使用していないため、非常に意味のあるエラーメッセージ「無効なインデックス名[Mkyong]、小文字でなければなりません」がスローされます。

Note
タイプは大文字の場合がありますが、お勧めしません。