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行目はテストデータの貼り付けを開始し、クリック▶️ うんてん
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"
  • query定義クエリー
  • match_allクエリータイプ【クエリーのすべてを表します】.esではqueryで非常に多くのクエリータイプを組み合わせて複雑なクエリー
  • を完了できます.
  • queryパラメータに加えて、クエリー結果を変更するために他のパラメータを渡すこともできます.sort、size
  • などです.
  • from+size限定、ページング機能
  • を完了
  • sortソート、マルチフィールドソート、前シーケンスフィールドが等しい場合に後続のワード内部ソート、そうでない場合、前シーケンスは準
  • ページング・クエリーで、属性の一部のみをクエリーする例:
    GET bank/_search
    {
      "query": {
        "match_all": {}
      },
      "sort": [
        {
          "balance": {
            "order": "desc"
          }
        }
      ],
      "from": 0,
      "size": 5,
      "_source": ["balance", "account_number"]
    }