ES ---クエリ

ES-クエリ

【はじめに】
ESは転置インデックスであるため、エントリに格納されたクエリをすばやく実現できます。インデックスを転送しないのはなぜですか。前の記事を参照してください。ここをクリックしてください。

一、URI Search

簡単な方法、一時的に使用できますが、複雑なクエリの作成には適していません
ここに画像の説明を挿入します

二、クエリDSL(ドメイン固有言語)

  • リーフクエリ
    • 一致クエリ
    • 用語クエリ
    • 範囲クエリ
  • 複合クエリ句
    • リーフクエリまたはその他の複雑なクエリステートメントを含めることができます
    • ブールクエリ

1.match_all:すべてのドキュメントを返します

GET stu/_search
{
    "query": {
        "match_all": {}
    }
}

2.match:bool type query
[名前フィールドの値にいずれか1つが含まれている限り、単語のセグメンテーションの結果はjohnとkerryの2つの単語になり、ドキュメントが返されます]

GET stu/_search
{
    "query": {
        "match": {
          "name":"John Kerry"
        }
    }
}

3.match_phrase:フレーズ一致クエリ
[単語セグメンテーションの結果はジョンとケリーの2つの単語であり、名前フィールドの値にすべての単語セグメンテーションが順番に含まれている場合、ドキュメントが返されます]

GET stu/_search
{
    "query": {
        "match_phrase": {
          "name":"John Kerry"
        }
    }
}

4.match_phrase_prefix:プレフィックス一致クエリ
[プレフィックスがXXドキュメントかどうかをクエリ]

GET stu/_search
{
    "query": {
        "match_phrase_prefix": {
          "name":"John Ke"
        }
    }
}

5.multi_match:マルチフィールドマッチングクエリ
[クエリは複数のフィールドを満たします]

GET stu/_search
{
    "query": {
        "multi_match": {
          "query": "John like cooking",
          "fields": ["name","interest"]
        }
    }
}

6.term:用語クエリ
[対応する用語に応じたクエリ]

GET stu/_search
{
    "query": {
        "term":{
          "name":"john"
        }
    }
}

7.terms:複数用語クエリ
[複数用語に基づくクエリ、用語との違いに注意]

GET stu/_search
{
    "query": {
        "terms":{
          "name":["john","da"]
        }
    }
}

8.範囲:範囲クエリ
[間...と...に似ていますが、B +ツリーがストレージとして使用されるため、非常に効率的です。すべてが無駄なクエリの多くを削減します]

GET stu/_search
{
    "query": {
        "range" : {
            "yearOfBorn" : {
                "gte" : 1995,
                "lte" : 2000
            }
        }
    }
}

9.bool:ブールクエリ
[料理は好きだが、1995年から2000年の間に生まれていないドキュメントのクエリ]

GET stu/_search
{
    "query": {
      "bool": {
        "must": {
            "match": { "interest": "cooking"} },
        "must_not": {
            "range": { "yearOfBorn": { "gte": 1995, "lte": 2000 }}}
      }
    }
}

[注:しなければならないこととしてはならないこと]

3.ページング
1.from + size:浅いページング
[最初の5ページを取り出します]

GET stu/_search
{
  "query": {
    "match_all": {}
  },
  "size": 5,
  "from": 0
}

2.スクロール:ディープページング
[scroll_idと最初のページのコンテンツを返します。scroll_idは5分間有効です]

GET stu/_search?scroll=5m
{
  "from": 0,
  "size": 5,
  "query": {"match_all": {}}
}

おすすめ

転載: blog.csdn.net/qq_43288259/article/details/114944105