|
Elasticsearchは、Apache Luceneをベースに構築されたオープンソースのリアルタイム分散検索・分析エンジンであり、強力な検索・クエリ機能を提供します。このセクションでは、Elasticsearchの検索・クエリ機能(基本検索、構造化クエリ、全文検索、集計、分析など)について、関連する例を挙げながら詳しく説明します。 - 検索とクエリ: Elasticsearch は柔軟で強力な検索およびクエリ機能を提供し、ユーザーが大規模なデータセットで全文検索、構造化クエリ、集計分析を効率的に実行できるようにします。
- 基本検索:Elasticsearchにおける基本検索は、クエリを実行する最もシンプルな方法です。検索対象となるフィールドとキーワードを指定するだけで、基本検索を実行できます。以下に例を示します。
GET /my_index/_search { "query": { "match": { "title": "Elasticsearch" } } } 上記の例では、「my_index」というインデックスに対して基本検索を実行しました。検索条件は、「title」フィールドにキーワード「Elasticsearch」を含むドキュメントでした。 - 構造化クエリ:Elasticsearchは豊富なクエリ構文とメソッドを提供し、より複雑な構造化クエリを可能にします。一般的なクエリタイプの一つにブールクエリがあり、複数のクエリ条件を組み合わせることでより正確な検索が可能になります。以下に例を示します。
GET /my_index/_search { "query": { "bool": { "must": [ { "match": { "title": "Elasticsearch" }}, { "range": { "price": { "gte": 10, "lte": 100 }}} ], "must_not": [ { "term": { "category": "exclude_category" }} ] } } } 上記の例では、ブールクエリを実行しました。このクエリでは、「title」フィールドにキーワード「Elasticsearch」が含まれていること、「price」フィールドの値は10~100であること、「category」フィールドの値が「exclude_category」であるドキュメントは除外されます。 - 全文検索:全文検索はElasticsearchの強みの一つです。テキストデータの全文インデックスをサポートし、様々な全文検索手法を提供しています。以下に例を示します。
GET /my_index/_search { "query": { "match": { "content": { "query": "full text search", "operator": "and" } } } } 上記の例では、全文検索を実行しました。検索条件は、「content」フィールドに「full」と「text」の両方のキーワードを含む文書でした。「and」演算子を指定することで、両方のキーワードが同時に一致することを要求しました。 - 集計と分析:Elasticsearchは強力な集計・分析機能を備えており、データの集計、グループ化、統計分析が可能です。以下に例を示します。
GET /my_index/_search { "size": 0, "aggs": { "group_by_category": { "terms": { "field": "category", "size": 10 }, "aggs": { "avg_price": { "avg": { "field": "price" } } } } } } 上記の例では、集計クエリを実行しました。集計フィールド「category」を使用して、ドキュメントをカテゴリごとにグループ化し、各カテゴリの平均価格を計算しました。「size」パラメータを指定することで、返されるグループの数を10に制限しています。 上記の例を通して、Elasticsearchの検索機能とクエリ機能(基本検索、構造化クエリ、全文検索、集計、分析など)について詳しく説明し、参考となる関連例も示しました。Elasticsearchの強力な機能は、大規模データセットの処理、リアルタイム検索、分析に最適です。 |