第43章 ElasticSearch


Elasticsearch コンポーネント

Camel 2.11 から利用可能
ElasticSearch コンポーネントを使用すると、ElasticSearch サーバーとのインターフェイスが可能になります。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-elasticsearch</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

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]
Copy to Clipboard Toggle word wrap
ヒント
ローカル(JVM/classloader) ElasticSearch サーバーに対して実行する場合は、URI の clusterName の値を local に設定します。詳細は、クライアントガイド を参照してください。

エンドポイントオプション

以下のオプションは ElasticSearch エンドポイントで設定できます。すべては、エンドポイント URI パラメーターまたはヘッダー(ヘッダーオーバーライドエンドポイントプロパティー)として設定する必要があります。
Expand
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 操作で使用する書き込み一貫性レベル( ONEQUORUMALL または DEFAULTのいずれかです)。
replicationType
Camel 2.16: INDEX および BULK 操作で使用するレプリケーションタイプ( SYNCASYNC または 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 オプションまたはエクスチェンジヘッダーを設定し、値は以下のいずれかに設定されるだけです。一部の操作では、他のパラメーターやメッセージボディーも設定する必要があります。
Expand
operation メッセージボディー description
INDEX MapString、または byte[] コンテンツでインデックス化するコンテンツ XContentBuilder インデックスにコンテンツを追加し、本文でコンテンツの indexId を返します。
GET_BY_ID 取得するコンテンツのインデックス ID 指定されたインデックスを取得し、ボディーで GetResult オブジェクトを返します。
DELETE 削除するコンテンツのインデックス ID 指定された indexId を削除し、ボディーで DeleteResult オブジェクトを返します。
BULK_INDEX
すでに受け入れられたタイプの リスト または コレクション (XContentBuilderMapbyte[]、または String)
Camel 2.14 は、 コンテンツをインデックスに追加し、ボディーで正常にインデックス化されたドキュメントの ID の List を返します。
BULK
すでに受け入れられたタイプの リスト または コレクション (XContentBuilderMapbyte[]、または 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");
Copy to Clipboard Toggle word wrap
<route>
    <from uri="direct:index" />
    <to uri="elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet"/>
</route>
Copy to Clipboard Toggle word wrap
クライアントは単に、Map が含まれるボディーメッセージをルートに渡す必要があります。結果ボディーには、作成された indexId が含まれます。
Map<String, String> map = new HashMap<String, String>();
map.put("content", "test");
String indexId = template.requestBody("direct:index", map, String.class);
Copy to Clipboard Toggle word wrap

Java の例

以下の例は、Java で定義された Camel ルートから ElasticSearch コンポーネントを使用する方法を示しています。
CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder() {
    @Override
    public void configure() throws Exception {
        from("direct:index")
          .to("elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet");
    }
});

Map<String, String> indexedData = new HashMap<>();
indexedData.put("content", "test");

ProducerTemplate template = camelContext.createProducerTemplate();
template.sendBody("direct:index", indexedData);
Copy to Clipboard Toggle word wrap

詳細は、これらのリソース を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat