ElasticSearch検索の使用
ElasticSearchは、Javaユーザーに2つの内蔵クライアントを提供します.
1.ノードクライアント:無データノードとしてクラスタに加入する.(無データノードの意味はいかなるデータも保存しないことである)しかし、彼はデータがクラスタ内の具体的な位置を知っていて、直接に対応ノードに転送することができる.
2.トランスポートクライアント:クラスタに参加せず、単純にクラスタ内のノードにリクエストを転送します.
両方のクライアントは9300ポートを介してクラスタとインタラクティブです.クラスタ内のノード間でも9300ポートで通信します.
1つのノードは単一のサーバであり、クラスタの一部であり、データを格納し、クラスタのインデックスと検索機能に参加する.特定のクラスタ名を構成することによって、特定のクラスタを追加します.
1つのクラスタは、1つ以上のノード(サーバ)から構成されます.1つのクラスタに1つのノードだけが有効であり、非常に良い.
Elasticsearchへの要求の構成部分は、他の一般的なHTTP要求と同じです. VERB HTTP方法:GET,POST,PUT,HEAD,DELETE PROTOCOL httpまたはhttpsプロトコル(Elasticsearchの前にhttpsエージェントがある場合のみ使用可能) HOST Elasticsearchクラスタのいずれかのノードのホスト名は、ローカルのノードであればlocalhost と呼ばれます. PORT Elasticsearch HTTPサービスがあるポートで、デフォルトは9200 です. PATH APIパス(例えば_countはクラスタ内のドキュメントの数を返す)は、PATHが_cluster/statsまたは_nodes/stats/jvm のような複数のコンポーネントを含むことができる. QUERY_STRINGいくつかのオプションのクエリー要求パラメータ、例えば?prettyパラメータは、要求をより美しく読みやすいJSONデータ に戻す. BODY 1つのJSON形式の要求主体(要求が必要であれば) 1.索引
Elasticsearchは、オブジェクト全体またはドキュメント(document)を格納できるドキュメント向けです.しかし、ストレージだけでなく、各ドキュメントのコンテンツをインデックス(index)して検索できるようにします.
elasticSearchにデータを格納する動作をインデックス(index)(データベース)といい、各ドキュメントはタイプ(type)(表)に帰属する.各タイプは複数のドキュメント(レコード、行)を含み、各ドキュメントは複数のフィールド(フィールド)を含む.
elasticSearchでの「インデックス」の意味:従来のリレーショナル・データベースと同様のデータベース名 は、データベース内のinsertキーワードに似ています. インデックスは、データベース内の特定のカラムのインデックスに似ています.
eg:従業員ディレクトリの作成:従業員ごとのドキュメントにインデックスuserを作成し、各ドキュメントのタイプはemployeeであり、インデックスはElasticSearchクラスタに格納される.
path:PUT/megacorp/employee/1
pathには、次の3つの情報が含まれています.
名前
説明
megacorp
索引名
employee
タイプ名
1
この社員のID
ディレクトリに従業員情報を追加します.
2.ドキュメントの取得インデックス・プロシージャには、elasticSearchが単一の従業員の情報を取得する体験を行うためのいくつかのデータが格納されています.HTTP GETリクエストを実行し、ドキュメントの「アドレス」であるインデックス、タイプ、IDを指定します.
GET/megacorp/employee/1最後にキーワードを使用searchは、元のドキュメントIDに取って代わります.応答コンテンツのhits配列には、私たちのすべての3つのドキュメントが含まれています.デフォルトでは、検索は上位10の結果 を返します.
GET/megacorp/employee/_searchクエリー文字列クエリー(urlパラメータ) GET/megacorp/employee/_search?q=last_name:ル DSL文クエリ(パラメータはjson形式で渡す) を使用
GET/megacorp/employee/_search
複雑な検索の追加検索フィルタ
eg:22歳以上の従業員を得る(gtより大きく、ltより小さい)
GET/megacorp/employee/_search
全文検索.ドキュメントとクエリー条件の一致度に従ってソートし、結果セットを返します.従来のデータベースでは、一致が一致しないのみで、一致クエリーはありません.
GET/megacorp/employee/_search
フレーズ検索.matchクエリをmatch_に変更する限りphraseクエリーでいいです.クエリーには、「水泳」と「水泳」(隣接)の従業員レコードが同時に含まれます.
GET/megacorp/employee/_search
集約.データベースに似たgroupby(textタイプを先に開く).
textタイプを開く
POST/megacorp/employee/
すべての社員の中で最大の共通点(趣味)を見つけることは何ですか.
GET/megacorp/employee/_search
1.ノードクライアント:無データノードとしてクラスタに加入する.(無データノードの意味はいかなるデータも保存しないことである)しかし、彼はデータがクラスタ内の具体的な位置を知っていて、直接に対応ノードに転送することができる.
2.トランスポートクライアント:クラスタに参加せず、単純にクラスタ内のノードにリクエストを転送します.
両方のクライアントは9300ポートを介してクラスタとインタラクティブです.クラスタ内のノード間でも9300ポートで通信します.
1つのノードは単一のサーバであり、クラスタの一部であり、データを格納し、クラスタのインデックスと検索機能に参加する.特定のクラスタ名を構成することによって、特定のクラスタを追加します.
1つのクラスタは、1つ以上のノード(サーバ)から構成されます.1つのクラスタに1つのノードだけが有効であり、非常に良い.
Elasticsearchへの要求の構成部分は、他の一般的なHTTP要求と同じです.
curl -X '://:/?' -d ''
Elasticsearchは、オブジェクト全体またはドキュメント(document)を格納できるドキュメント向けです.しかし、ストレージだけでなく、各ドキュメントのコンテンツをインデックス(index)して検索できるようにします.
elasticSearchにデータを格納する動作をインデックス(index)(データベース)といい、各ドキュメントはタイプ(type)(表)に帰属する.各タイプは複数のドキュメント(レコード、行)を含み、各ドキュメントは複数のフィールド(フィールド)を含む.
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices( ) -> Types( ) -> Documents( ) -> Fields( )
elasticSearchでの「インデックス」の意味:
eg:従業員ディレクトリの作成:従業員ごとのドキュメントにインデックスuserを作成し、各ドキュメントのタイプはemployeeであり、インデックスはElasticSearchクラスタに格納される.
path:PUT/megacorp/employee/1
{
"first_name" : " ",
"last_name" : " ",
"age" : 25,
"about" : " 、 ",
"interests": [ " ", " " ]
}
pathには、次の3つの情報が含まれています.
名前
説明
megacorp
索引名
employee
タイプ名
1
この社員のID
ディレクトリに従業員情報を追加します.
2.ドキュメントの取得
GET/megacorp/employee/1
GET/megacorp/employee/_search
GET/megacorp/employee/_search
{
"query" : {
"match" : {
"last_name" : " "
}
}
}
複雑な検索の追加検索フィルタ
eg:22歳以上の従業員を得る(gtより大きく、ltより小さい)
GET/megacorp/employee/_search
{
"query" : {
"filtered" : {
"filter" : {
"range" : {
"age" : { "gt" : 22 }
}
},
"query" : {
"match" : {
"last_name" : " "
}
}
}
}
}
全文検索.ドキュメントとクエリー条件の一致度に従ってソートし、結果セットを返します.従来のデータベースでは、一致が一致しないのみで、一致クエリーはありません.
GET/megacorp/employee/_search
{
"query" : {
"match" : {
"about" : " "
}
}
}
フレーズ検索.matchクエリをmatch_に変更する限りphraseクエリーでいいです.クエリーには、「水泳」と「水泳」(隣接)の従業員レコードが同時に含まれます.
GET/megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : " "
}
}
}
集約.データベースに似たgroupby(textタイプを先に開く).
textタイプを開く
POST/megacorp/employee/
{
"properties": {
"interest": {
"type":"text",
"fielddata":true
}
}
}
すべての社員の中で最大の共通点(趣味)を見つけることは何ですか.
GET/megacorp/employee/_search
{
"aggs": {
"all_interests": {
"terms": { "field": "interests" }
}
}
}