Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第43章 ElasticSearch
Elasticsearch コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.11 から利用可能
ElasticSearch コンポーネントを使用すると、ElasticSearch サーバーとのインターフェイスが可能になります。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
Camel on EAP デプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
elasticsearch://clusterName?[options]
elasticsearch://clusterName?[options]
ヒント
ローカル(JVM/classloader) ElasticSearch サーバーに対して実行する場合は、URI の clusterName の値を
local
に設定します。詳細は、クライアントガイド を参照してください。
エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションは ElasticSearch エンドポイントで設定できます。すべては、エンドポイント URI パラメーターまたはヘッダー(ヘッダーオーバーライドエンドポイントプロパティー)として設定する必要があります。
name | description |
---|---|
operation
|
必須。実行する操作を示します。 |
indexName
|
動作させるインデックスの名前。
|
indexType
|
動作させるインデックスのタイプ。
|
ip
|
Camel 2.12 を使用する TransportClient リモートホスト IP アドレス。
|
port
|
使用する TransportClient リモートポート(デフォルトは 9300) Camel 2.12。
|
transportAddresses
|
Camel 2.16: 使用するリモートトランスポートアドレス
ip:port 形式のコンマ区切りリスト。transportAddresses を代わりに考慮するには、オプション ip および port を空白のままにする必要があります。
|
consistencyLevel
|
Camel 2.16: INDEX および BULK 操作で使用する書き込み一貫性レベル(
ONE 、QUORUM 、ALL または DEFAULT のいずれかです)。
|
replicationType
|
Camel 2.16: INDEX および BULK 操作で使用するレプリケーションタイプ(
SYNC 、ASYNC または DEFAULT のいずれかです)。Elasticsearch 2.0.0 から非同期レプリケーションが削除されているため、Camel 2.17: replicationType オプションは削除されました。
|
parent
|
Camel 2.16.1 / 2.17.0: 親レコードの ID を指定するために Elasticsearch Parent-Child 関係の INDEX 操作で使用されるオプションです。
|
clientTransportSniff
|
Camel 2.17: クライアントが残りのクラスターをスニッフィングできるかどうかを指定します。
|
メッセージ操作 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の ElasticSearch 操作は現在サポートされています。
operation
のキーでエンドポイント URI オプションまたはエクスチェンジヘッダーを設定し、値は以下のいずれかに設定されるだけです。一部の操作では、他のパラメーターやメッセージボディーも設定する必要があります。
operation | メッセージボディー | description |
---|---|---|
INDEX
|
Map 、String 、または byte[] コンテンツでインデックス化するコンテンツ XContentBuilder
|
インデックスにコンテンツを追加し、本文でコンテンツの indexId を返します。
|
GET_BY_ID
|
取得するコンテンツのインデックス ID |
指定されたインデックスを取得し、ボディーで GetResult オブジェクトを返します。
|
DELETE
|
削除するコンテンツのインデックス ID |
指定された indexId を削除し、ボディーで DeleteResult オブジェクトを返します。
|
BULK_INDEX
|
すでに受け入れられたタイプの リスト または コレクション (
XContentBuilder 、Map 、byte[] 、または String )
|
Camel 2.14 は、 コンテンツをインデックスに追加し、ボディーで正常にインデックス化されたドキュメントの ID の List を返します。
|
BULK
|
すでに受け入れられたタイプの リスト または コレクション (
XContentBuilder 、Map 、byte[] 、または String )
|
Camel 2.15 では、 コンテンツをインデックスに追加し、ボディーで BulkResponse オブジェクトを返します。
|
SEARCH
|
Map または、 SearchRequest
|
Camel 2.15: クエリー文字列のマップでコンテンツを検索します。
|
MULTIGET
|
一覧 MultigetRequest.Item
|
Camel 2.17:
MultigetRequest で指定したインデックスやタイプなどを取得し、ボディーで MultigetResponse オブジェクトを返します。
|
MULTISEARCH
|
一覧 SearchRequest
|
Camel 2.17:
MultiSearchRequest に指定されたパラメーターを検索し、ボディーで MultiSearchResponse オブジェクトを返します。
|
EXISTS
|
ヘッダーとしてのインデックス名
|
Camel 2.17: ボディー内のブール値オブジェクトを返します。
|
UPDATE
|
Map 更新するコンテンツ、String 、または byte[] XContentBuilder
|
Camel 2.17: コンテンツをインデックスに更新し、ボディーでコンテンツの
indexId を返します。
|
インデックスの例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下は簡単な INDEX の例になります。
from("direct:index") .to("elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet");
from("direct:index")
.to("elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet");
<route> <from uri="direct:index" /> <to uri="elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet"/> </route>
<route>
<from uri="direct:index" />
<to uri="elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet"/>
</route>
クライアントは単に、Map が含まれるボディーメッセージをルートに渡す必要があります。結果ボディーには、作成された indexId が含まれます。
Map<String, String> map = new HashMap<String, String>(); map.put("content", "test"); String indexId = template.requestBody("direct:index", map, String.class);
Map<String, String> map = new HashMap<String, String>();
map.put("content", "test");
String indexId = template.requestBody("direct:index", map, String.class);
Java の例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、Java で定義された Camel ルートから ElasticSearch コンポーネントを使用する方法を示しています。
詳細は、これらのリソース を参照してください。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!