ElasticSearch学習ノート|Match_ALLステップ検索
4670 ワード
一、テストデータのインポート
ElasticSearch公式にはデバッグ用のテストデータの一部を用意しており、Kinabaのインストールが完了した後、データのインポート処理を行うことができます.
1.データの取得
開く https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json
すべてのデータをコピー(Rawボタンをクリックし、新しいページCtrl+A)
2.一括追加の実行
Kinaba:xxxx:5601/app/dev_を開くtools#/console、1行目は下の1行目を入力し、2行目はテストデータの貼り付けを開始し、クリック▶️ うんてん
二、ESは二つの基本方式の検索をサポートする
一つはREST request URIを用いて探索パラメータ(uri+検索パラメータ)を送信することである.
もう1つは、REST request bodyを使用して送信する(uriリクエストボディ)
例1:
結果を返します.
結果はすべてのデータを返すのではなく、ページ分けのように10のデータを返します.
例2:
まずaccount_に従いますnumberは降順を行い、同じ場合balanceに従って降順を行う
結果を返します.
三、Query DSL
1.基本構文フォーマット
ElasticSearchはクエリーを実行できるson風のDSL(domain-specific language分野特定言語)を提供しています.これはQuery DSLと呼ばれています.このクエリー言語は非常に全面的で、最初は少し複雑な感じがしましたが、本当にそれをマスターする方法はいくつかの基礎的な例から始まります.
クエリ文の典型的な構造:
たとえば、すべてのクエリーを行います.
フィールド・クエリーの場合、クエリー構造は次のとおりです.
たとえば、balance降順でクエリーを行います.
実はもう1種の簡単な表現形式があって、効果は同じです query定義クエリー match_allクエリータイプ【クエリーのすべてを表します】.esではqueryで非常に多くのクエリータイプを組み合わせて複雑なクエリー を完了できます. queryパラメータに加えて、クエリー結果を変更するために他のパラメータを渡すこともできます.sort、size などです. from+size限定、ページング機能 を完了 sortソート、マルチフィールドソート、前シーケンスフィールドが等しい場合に後続のワード内部ソート、そうでない場合、前シーケンスは準 ページング・クエリーで、属性の一部のみをクエリーする例:
ElasticSearch公式にはデバッグ用のテストデータの一部を用意しており、Kinabaのインストールが完了した後、データのインポート処理を行うことができます.
1.データの取得
開く https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json
すべてのデータをコピー(Rawボタンをクリックし、新しいページCtrl+A)
2.一括追加の実行
Kinaba:xxxx:5601/app/dev_を開くtools#/console、1行目は下の1行目を入力し、2行目はテストデータの貼り付けを開始し、クリック▶️ うんてん
POST /bank/account/_bulk
{"index":{"_id":"1"}}
{"account_number":1,"balance":39225,"f....( )
二、ESは二つの基本方式の検索をサポートする
一つはREST request URIを用いて探索パラメータ(uri+検索パラメータ)を送信することである.
もう1つは、REST request bodyを使用して送信する(uriリクエストボディ)
例1:
GET bank/_search?q=*&sort=account_number:asc
結果を返します.
結果はすべてのデータを返すのではなく、ページ分けのように10のデータを返します.
{
"took" : 43,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1000,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "bank",
"_type" : "account",
"_id" : "0",
"_score" : null,
"_source" : {
"account_number" : 0,
"balance" : 16623,
"firstname" : "Bradshaw",
"lastname" : "Mckenzie",
"age" : 29,
"gender" : "F",
"address" : "244 Columbus Place",
"employer" : "Euron",
"email" : "[email protected]",
"city" : "Hobucken",
"state" : "CO"
},
"sort" : [
0
]
},
...
例2:
まずaccount_に従いますnumberは降順を行い、同じ場合balanceに従って降順を行う
GET bank/_search
{
"query": {"match_all": {}},
"sort": [
{
"account_number": "desc"
},
{
"balance": "desc"
}
]
}
結果を返します.
{
"took" : 12,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1000,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "bank",
"_type" : "account",
"_id" : "999",
"_score" : null,
"_source" : {
"account_number" : 999,
"balance" : 6087,
"firstname" : "Dorothy",
...
三、Query DSL
1.基本構文フォーマット
ElasticSearchはクエリーを実行できるson風のDSL(domain-specific language分野特定言語)を提供しています.これはQuery DSLと呼ばれています.このクエリー言語は非常に全面的で、最初は少し複雑な感じがしましたが、本当にそれをマスターする方法はいくつかの基礎的な例から始まります.
クエリ文の典型的な構造:
{
QUERY_NAME:{
ARGUMENT:VALUE,
ARGUMENT:VALUE...
}
}
たとえば、すべてのクエリーを行います.
GET bank/_search
{
"query": {
"match_all": {}
}
}
フィールド・クエリーの場合、クエリー構造は次のとおりです.
{
QUERY_NAME:{
FIELD NAME:{
ARGUMENI:VALUE,
ARGUMENT:VALUE...
}
}
}
たとえば、balance降順でクエリーを行います.
GET bank/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"balance": {
"order": "desc"
}
}
]
}
実はもう1種の簡単な表現形式があって、効果は同じです
"balance": {
"order": "desc"
}
:
"balance": "desc"
GET bank/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"balance": {
"order": "desc"
}
}
],
"from": 0,
"size": 5,
"_source": ["balance", "account_number"]
}