Elasticsearchアプリケーション
検索アプリケーションは、ユーザーがElasticsearchとそのクエリDSLの完全な機能を活用した検索駆動型アプリケーションを構築できるようにし、簡素化されたユーザーエクスペリエンスを提供します。Elasticsearchインデックスに基づいて検索アプリケーションを作成し、検索テンプレートを使用してクエリを構築し、Kibanaの検索UIで結果を直接簡単にプレビューできます。
また、検索アプリケーションAPIを使用して検索アプリケーションと対話することもできます。検索アプリケーションは、Elasticプラットフォームを使用して、さまざまなエンタープライズ検索ユースケースにわたる統一された検索体験を構築するために設計されています。
検索アプリケーションのドキュメント
検索アプリケーション機能に関するドキュメントは2つの場所にあります:
- このセクションのドキュメントは、検索アプリケーションの基本、Kibana UIでの検索アプリケーションの操作に関する情報、およびユースケースの例をカバーしています。
- Elasticsearch APIドキュメントには、プログラムで検索アプリケーションを操作するためのAPIリファレンスが含まれています。APIにのみ興味がある場合は、こちらにジャンプしてください。
可用性と前提条件
検索アプリケーション機能は、Elasticバージョン8.8.0で導入されました。
検索アプリケーションはベータ機能です。ベータ機能は変更される可能性があり、一般リリース(GA)機能のサポートSLAの対象外です。Elasticは、将来のリリースでこの機能をGAに昇格させる予定です。
この機能はすべてのElastic Cloudデプロイメントで利用可能です。
この機能は、Elasticのサブスクリプション要件が満たされている場合、自己管理型デプロイメントでも利用可能です。この機能の要件は、Elastic StackサブスクリプションページのElastic Searchセクションで確認できます。
デプロイメントにはElasticsearchおよびKibanaサービスが含まれている必要があります。
検索アプリケーションを管理するには、manage_search_application
クラスター特権が必要であり、検索アプリケーションに関連するすべてのインデックスに対してmanage
インデックス特権も必要です。
概要
ElasticsearchのクエリDSLは強力で柔軟ですが、急な学習曲線があります。複雑なクエリは冗長であり、非専門家には理解しにくいです。私たちは、検索アプリケーションが検索しやすくなるように設計しましたが、Elasticsearchインデックスで作業する柔軟性も持っています。
検索アプリケーションは、検索テンプレートを使用してクエリ構築プロセスを簡素化します。テンプレートは検索アプリケーションを作成する際に定義され、ニーズに応じてカスタマイズできます。詳細については、検索APIとテンプレートをお読みください。
始める
オプション1: UIで始める
Kibana UIの検索の下で、検索アプリケーションを直接作成、構築、管理できます。デプロイメントで作業するために少なくとも1つのElasticsearchインデックスが必要です。検索アプリケーションの基盤となるインデックスは、エイリアスが複数のインデックスを検索するのと同様に、一緒に検索されます。
Kibanaで新しい検索アプリケーションを作成するには:
- 1. 検索 > 検索アプリケーションに移動します。
- 2. 作成を選択します。
- 3. 検索アプリケーションに使用するElasticsearchインデックスを選択します。
- 4. 検索アプリケーションに名前を付けます。
- 5. 作成を選択します。
検索アプリケーションは、検索アプリケーションのリストに表示されるようになります。
作成後、検索 > 検索アプリケーション > your-search-application \> Docs Explorerの下で検索アプリケーション内のドキュメントを探索できます。そこから、一致するElasticsearchドキュメントを展開してその内容を確認できます。
オプション2: APIで始める
Elasticsearchの検索アプリケーション作成APIを使用して検索アプリケーションを作成します。
以下の例は、my_search_application
という名前の検索アプリケーションを作成し、my_search_index1
およびmy_search_index2
インデックスを検索し、シンプルな検索テンプレートを定義します(デフォルトテンプレートの例を参照)。
Python
resp = client.search_application.put(
name="my_search_application",
search_application={
"indices": [
"my_search_index1",
"my_search_index2"
],
"template": {
"script": {
"source": {
"query": {
"query_string": {
"query": "{{query_string}}",
"default_field": "{{default_field}}"
}
}
},
"params": {
"query_string": "*",
"default_field": "*"
}
}
}
},
)
print(resp)
Js
const response = await client.searchApplication.put({
name: "my_search_application",
search_application: {
indices: ["my_search_index1", "my_search_index2"],
template: {
script: {
source: {
query: {
query_string: {
query: "{{query_string}}",
default_field: "{{default_field}}",
},
},
},
params: {
query_string: "*",
default_field: "*",
},
},
},
},
});
console.log(response);
コンソール
PUT /_application/search_application/my_search_application
{
"indices": [ "my_search_index1", "my_search_index2" ],
"template": {
"script": {
"source": {
"query": {
"query_string": {
"query": "{{query_string}}",
"default_field": "{{default_field}}"
}
}
},
"params": {
"query_string": "*",
"default_field": "*"
}
}
}
}
検索テンプレート
検索テンプレートは、検索アプリケーションの中心です。検索アプリケーションのために作成されたデフォルトテンプレートは非常に最小限であり、ニーズに合わせてカスタマイズする必要があります。検索APIとテンプレートには、デフォルトテンプレートを含むいくつかの例が含まれており、テキスト検索、セマンティック検索、ハイブリッド検索のテンプレートもあります。