ESインターフェースCRUD

図1に示すように、文書データフォーマット

ドキュメント指向の検索エンジンの分析

データ構造は、(1)オブジェクト指向のアプリケーションシステム、複雑であり
、データベースに格納されている(2)対象データのみ解体するために、平坦な複数のテーブルとなり、その都度バッククエリに復帰しなければなりませんオブジェクトフォーマットは、かなり面倒であり
、(3)ESがドキュメントに格納されたドキュメント指向のデータ構造であり、オブジェクト指向のデータ構造は同一であるデータ構造、ES複合体は、この文書の索引付け、全文検索、およびポリマーに基づいて提供することができます等
文書(4)を発現するために使用されるES JSONデータ・フォーマット

パブリッククラスEmployee {

プライベート文字列電子メール;
プライベート文字列firstNameの;
プライベート文字列lastNameの。
プライベートEmployeeInfo情報。
プライベート日joinDate。

}

{クラスEmployeeInfoプライベート

プライベート文字列のバイオ; //文字
プライベート整数年齢;
プライベートString []型興味; //興味

}

EmployeeInfo情報=新しいEmployeeInfo();
info.setBio( "好奇心とささやかな");
info.setAge(30)。
info.setInterests(新しいString [] { "自転車"、 "上昇"})。

従業員=新しい従業員();
employee.setEmail( "[email protected]");
employee.setFirstName( "さん");
employee.setLastName( "張");
employee.setInfo(情報)。
employee.setJoinDate(新しいDate());

従業員オブジェクト:独自のプロパティが含まれているEmployeeクラス、EmployeeInfoオブジェクトがあります

データEmployeeInfoのに従業員テーブル、のemployee_infoテーブル、従業員オブジェクトのデータは、再オープンすると、従業員データ:二つのテーブル
従業員表:電子メール、FIRST_NAME、LAST_NAME、join_date 、4つの分野
のemployee_info表:バイオ、年齢、興味、 3つのフィールド、例えばEMPLOYEE_IDなどの外部キーフィールドに加えて、従業員のテーブルに関連付けられています

{
"電子メール": "[email protected]"、
"FIRST_NAME": "さん"、
"LAST_NAME": "張"、
"情報":{
"バイオ": "好奇心とささやかな"、
"年齢":30、
"利益":[ "自転車"、 "登る"]
}、
"join_date": "2017年1月1日"
}

私たちは、文書データのフォーマットやデータベースのリレーショナルデータ形式のESの違いを理解します

-------------------------------------------------- -------------------------------------------------- ------------------------

2、電気の供給業者のウェブサイトコモディティ管理ケースの背景

トラムのウェブサイトがありますが、あなたは以下の機能を提供し、そのESに基づいて、バックエンド・システムを構築する必要があります。

(1)CRUD(CRUD)操作のための物品に関する情報
(2)単純な構造化照会を実行するために
取得するために、(3)単純な全文検索を実行することができ、複雑なフレーズ(句)
(4)のフルテキスト検索の結果を、これは、強調表示することができる
(5)データ解析シンプルシンジケーションを

-------------------------------------------------- -------------------------------------------------- ------------------------

3、簡単なクラスタ管理

健康状態は、(1)クイックチェックをクラスタリングします

ESは猫のAPIと呼ばれるAPIのセットを提供し、ESは、様々なデータで見ることができます

GET / _cat /健康?V

エポックタイムスタンプクラスタステータスnode.total node.data破片PRI RELO INIT割り当て解除pending_tasks max_task_wait_time active_shards_percent
1488006741午後03時12分21秒elasticsearchイエロー1人の1 1 1 0 0 1 0から50.0パーセント

エポックタイムスタンプクラスタステータスnode.total node.data破片PRI RELO INIT割り当て解除pending_tasks max_task_wait_time active_shards_percent
1488007113夜3時18分33秒2 2 2 1 0 0 0 0緑色elasticsearch - 100.0%

エポックタイムスタンプクラスタステータスnode.total node.data破片PRI RELO INIT割り当て解除pending_tasks max_task_wait_time active_shards_percent
1488007216 15時20分16秒elasticsearchイエロー1人の1 1 1 0 0 1 0から50.0パーセント

すぐにクラスタの健康状態を把握するには?赤、黄、緑?

緑:各インデックスシャードプライマリおよび複製断片アクティブ状態は、
黄:索引プライマリー断片は、各状態は利用できない状態で、アクティブ複製断片部アクティブではなく、
赤:プライマリインデックスの必ずしもすべてシャードは、インデックスデータの一部が失われ、アクティブ状態であります

なぜ、今、黄色の状態では?

私たちは、それがプロセスES、一つのノードのみと同等のものを始め、ラップトップになりました。ESは今のインデックスを持っている、それが確立kibana独自に構築インデックスです。デフォルト構成は、各レプリカシャードインデックスのプライマリー断片5,5が割り当てられ、プライマリー断片とレプリカ断片は、(フォールトトレランスのために)、同じマシン上に存在することができません。今、自分自身を確立するkibana指数は、プライマリー断片とレプリカのシャードです。現在のノードで、その1つのプライマリシャードが割り当てられ、活性化ではなく、レプリカのシャードは、第二のマシンを起動しています。

少し実験操作を行います。第二のプロセスのESを開始する限り、この時間は、クラスタESに2つのノードがあるだろう、とレプリカシャードは、自動的に過去に割り当てられ、その後、クラスタのステータスが緑の状態になっていること。

どのインデックス(2)クイックビュークラスタいます

GET / _cat /インデックス?V

健康状態の指標UUID PRI担当者docs.count docs.deleted store.size pri.store.size
黄色オープン.kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1キロバイトの3.1キロバイト

(3)簡単な割出動作

インデックスを作成します:PUT / test_indexかわいいですか?

健康状態の指標UUID PRI担当者docs.count docs.deleted store.size pri.store.size
黄色オープンtest_index XmS9DTAtSkSZSwWhhGEKkQ 5 1 0 0 650Bの650B
黄色のオープン.kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1キロバイトの3.1キロバイト

かなりDELETE / test_index:インデックスを削除しますか?

健康状態の指標UUID PRI担当者docs.count docs.deleted store.size pri.store.size
黄色オープン.kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1キロバイトの3.1キロバイト

-------------------------------------------------- -------------------------------------------------- ------------------------

4、商品CRUD操作

(1)新製品:新文書、インデックス

PUT /インデックス/タイプ/ ID
{
"のJSON数据"
}

PUT / eコマース/製品/ 1
{
"名前": "gaolujie yagao"、
"DESC": "gaoxiao meibai"、
"価格" 30、
"生産者": "gaolujieプロデューサー"、
"タグ": "meibai"、 "fangzhu"]
}

{
"_index": "電子商取引"、
"_type": "製品"、
"_id": "1"、
"_version":1、
"結果": "作成"、
"_shards":{
"合計":2、
"成功":1、
"失敗":0
}、
"作成":真
}

PUT / eコマース/製品/ 2
{
"名前": "jiajieshi yagao"、
"DESC": "youxiao fangzhu"、
"価格" 25、
"生産者": "jiajieshiプロデューサー"、
"タグ": "fangzhu"]
}

PUT / eコマース/製品/ 3
{
"名前": "中華yagao"、
"DESC": "caoben zhiwu"、
"価格" 40、
"生産者": "中華プロデューサー"、
"タグ": "qingxin"]
}

ESは、自動的に検索することができるように、インデックスおよびタイプ、事前に作成する必要はありませんし、デフォルトESは、転置インデックスを構築されている各フィールドを文書化します作成されます。

(2)製品のクエリ:文書を検索

GET /インデックス/タイプ/ ID
GET / eコマース/製品/ 1

{
"_index": "電子商取引"、
"_type": "製品"、
"_id": "1"、
"_version":1、
"見つかった":真、
"_source":{
"名前": "gaolujie yagao" 、
"DESC": "gaoxiao meibai"、
"価格" 30、
"生産者": "gaolujieプロデューサー"、
"タグ":
"meibai"、
"fangzhu"
]
}
}

(3)製品を変更:文書を交換してください

PUT / eコマース/製品/ 1
{
"名前": "jiaqiangban gaolujie yagao"、
"DESC": "gaoxiao meibai"、
"価格" 30、
"生産者": "gaolujieプロデューサー"、
"タグ":[ "meibai" 、 "fangzhu"]
}

{
"_index": "電子商取引"、
"_type": "製品"、
"_id": "1"、
"_version":1、
"結果": "作成"、
"_shards":{
"合計":2、
"成功":1、
"失敗":0
}、
"作成":真
}

{
"_index": "電子商取引"、
"_type": "製品"、
"_id": "1"、
"_version":2、
"結果": "更新"、
"_shards":{
"合計":2、
"成功":1、
"失敗":0
}、
"作成":偽
}


PUT / eコマース/製品/ 1
{
"名前": "jiaqiangban gaolujie yagao"
}

良い代替は、情報を変更するために、あなたはすべてのフィールドを持参しなければならない場合でも、あります

(4)取引を修正:更新文書を

POST / eコマース/製品/ 1 / _update
{
"DOC":{
"名前": "jiaqiangban gaolujie yagao"
}
}

{
"_index": "電子商取引"、
"_type": "製品"、
"_id": "1"、
"_version":8、
"結果": "更新"、
"_shards":{
"合計":2、
"成功":1、
"失敗":0
}
}

削除する文書:(5)の項目を削除します

DELETE / eコマース/製品/ 1

{
"見つかりました":真、
"_index": "電子商取引"、
"_typeを": "製品"、
"_id": "1"、
"_version":9、
"結果": "削除"、
"_shardsを":{
"合計":2、
"成功":1、
"失敗":0
}
}

{
"_index": "電子商取引"、
"_type": "製品"、
"_id": "1"、
"ある":偽
}

おすすめ

転載: www.cnblogs.com/siye1989/p/11539699.html