ホームページ > バックエンド開発 > PHPチュートリアル > Elasticsearchのクエリ構文と実践的な戦闘についての徹底的な研究

Elasticsearchのクエリ構文と実践的な戦闘についての徹底的な研究

WBOY
リリース: 2023-10-03 09:18:02
オリジナル
844 人が閲覧しました

深入学习 Elasticsearch 查询语法与实战

Elasticsearch クエリ構文と実践の詳細な学習

はじめに:
Elasticsearch は、Lucene をベースとしたオープンソースの検索エンジンで、主に分散検索と検索に使用されます。全文検索やログ分析、大規模データのレコメンドシステムなどのシーンで幅広く利用されています。 Elasticsearch をデータ クエリに使用する場合、クエリ構文を柔軟に使用することがクエリ効率を向上させる鍵となります。この記事では、Elasticsearch クエリ構文を詳しく説明し、実際のケースに基づいた詳細なコード例を示します。

1. 概要
Elasticsearch のクエリ構文は JSON 形式を使用しており、主にクエリ ステートメント、フィルター条件、並べ替え、ページング、その他の機能が含まれます。これらの構文を柔軟に組み合わせることで、さまざまな複雑なデータ クエリを実装できます。

2. クエリ ステートメント

  1. Match クエリ:
    Match クエリは、キーワードに基づいて指定されたフィールドのクエリ結果を照合する、最も基本的な全文クエリです。サンプル コードは次のとおりです。

    GET /index/_search
    {
      "query": {
     "match": {
       "field": "keyword"
     }
      }
    }
    ログイン後にコピー
  2. Term クエリ:
    Term クエリは、指定されたフィールドの値を正確に照合するために使用されます。サンプル コードは次のとおりです。

    GET /index/_search
    {
      "query": {
     "term": {
       "field": "value"
     }
      }
    }
    ログイン後にコピー
  3. Range クエリ:
    Range クエリは、指定されたフィールドの範囲内の値をクエリするために使用されます。サンプル コードは次のとおりです。

    GET /index/_search
    {
      "query": {
     "range": {
       "field": {
         "gte": "start value",
         "lte": "end value"
       }
     }
      }
    }
    ログイン後にコピー
  4. Bool クエリ:
    Bool クエリは、複数のクエリ条件を組み合わせるために使用され、must、must_not、 should などの論理関係をサポートします。サンプル コードは次のとおりです:

    GET /index/_search
    {
      "query": {
     "bool": {
       "must": [
         { "match": { "field1": "value1" } },
         { "match": { "field2": "value2" } }
       ],
       "must_not": { "term": { "field3": "value3" } },
       "should": { "term": { "field4": "value4" } }
     }
      }
    }
    ログイン後にコピー

3. フィルター条件
フィルター条件は、クエリ結果の範囲を制限し、不要な計算を減らすために使用されます。一般的に使用されるフィルター条件は次のとおりです。

  1. 用語フィルター: フィールドの正確な値に基づいてフィルターします。
  2. 範囲フィルター: フィールドの範囲に基づいてフィルターします。
  3. Exists フィルター: フィールドが存在するかどうかに基づいてフィルターします。
  4. ブールフィルター: 複数のフィルター条件を組み合わせます。

4. 並べ替え
クエリ結果では、指定されたフィールドの値に従って並べ替えることができます。一般的に使用される並べ替え方法は次のとおりです。

  1. フィールドの並べ替え: 指定されたフィールドの値に従って並べ替えます。
  2. スコアの並べ替え: 関連性に応じてドキュメントを並べ替えます。

5. ページ分割
一度に大量のデータが返されるのを避けるために、クエリ結果をページ分割できます。一般的に使用されるページング方法は次のとおりです。

  1. From/Size ページング: from パラメーターと size パラメーターを使用して、返される結果の開始位置と数量を指定します。
  2. スクロール ページング: ページングにはスクロール API を使用します。

6. 実践的なケース
次は、データ クエリに Elasticsearch のクエリ構文を使用する方法を示す実践的なケースです。

ケース: EC サイトで商品キーワードを検索し、販売数量と価格に基づいて並べ替えます。

GET /products/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "name": "手机" } }
      ]
    }
  },
  "sort": [
    { "sales": "desc" },
    { "price": "asc" }
  ]
}
ログイン後にコピー

上記のクエリでは、bool クエリの match ステートメントを使用して製品名に「携帯電話」を含む製品を検索し、sort パラメーターを使用して販売数量と価格の降順に並べ替えています。昇順で。

結論:
この記事では、Elasticsearch のクエリ構文を詳しく調査し、実際のケースを通じて詳細なコード例を提供します。これらのクエリ構文を柔軟に使用すると、データ クエリの効率と精度が向上します。実際のプロジェクトでは、特定のニーズに応じてさまざまなクエリ構文を組み合わせて使用​​し、さまざまなデータ クエリ シナリオを満たすことができます。

以上がElasticsearchのクエリ構文と実践的な戦闘についての徹底的な研究の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート