Elasticsearch java appi概要
7264 ワード
ウェブサイトAPIアドレス
https://www.elastic.co/guide/en/elasticsearch/client/index.html
具体的な学習の説明のすべてのelasticsearch動作は、Cientオブジェクトを介して行われる。 オペレーションは、clientに格納され、バッチ処理で実行される。すべての関連APIは、java API に基づく。
maven依存 Log 4 j 2 dependencies に加入する必要があります。は、classipathパスでlogl 4 j 2のプロファイルを追加します。例えば、src/main/resource projectディレクトリの下のlogl 4 j.properties: SLF 4 Jを使うには、以下のようなものが必要です。
jarパケット衝突は、Gava and Jodaのような第三者依存によって処理される。例えばes(以後、凡是elasticsearch略称es)はJoda 2.8を使用し、あなたのjavaコードはJoda 2.1を使用します。
じゃ、また二つの方法でこの問題を解決できます。
方式1
コードバージョンを更新します。
方式二
衝突の依存性を再読み込みして、あなたのプロジェクトまたはesおよびes clientに関連したプラグインに必要なバージョンと一致させます。詳細な操作方法はここを参照してください。
包装は依存のjarの包みを含みます。
あなたのアプリケーションがすべての依存性を持つjarパッケージにパッケージ化されていると言いたいなら、maven-asembly-pluginを使用することはできません。META-INF/servicesディレクトリ構造を処理できないので、Maven-shard-pluginを使用するべきです。その構成は以下の通りです。
ElasticsearchとLucene clasesは同じJBoss moduleに配置する必要があります。
設定module.xmlファイルは以下の通りです。
client
様々な方法でJava clientを使うことができます。は、既存のクラスタにおいて、標準インデックス(index)、取得、削除、検索動作 を実行する。は、1つの実行中のクラスタで、管理タスク を実行する。
一番簡単にclientを取得する方法
クラスタに接続されたTransport Clientを通じて
注意:clientのメインプログラムバージョンはクラスタ内のノードと一致しなければなりません。少し違っていると、いくつかの追加機能が使えなくなります。Clienntsはclusterのバージョンと一致します。
Transport Cient
Transport Clientはthe transportモジュールを使ってElasticsearch clusterとリモート接続しています。クラスタに参加していません。1つ以上の転送アドレスを取得して、round robin fashionで。操作ごとに通信する。
Transport clientは、新しいホスト原理の説明を動的に追加したり、古いホスト原理の説明を削除したりすることができます。sniffingが有効にされた時には、transport clientは内部に接続されます。addTransport Addressによって作成されたノードリストを呼び出します。その後、Transport clientは、これらのノードの内部クラスタ状態APIを呼び出して、利用可能なデータノードを発見します。このclientの内部ノードリストは、これらのデータノードだけで代替されます。
2,このデータリストはデフォルトでは5秒ごとに更新されます。
3,snifferが接続しているipアドレスはすべてesの構成で定義されています。
4,このリストは、初期ノードがデータノードではない場合、その接続された初期ノードを含んでいないかもしれない。
例えば、あなたが初期化してホストノードを接続した場合、sniffingの後、このホストノードへのアクセスを要求することなく、他の任意のデータノードへのアクセスを要求します。非データノードを排除することは、非データマスタノードの検索ブロックを回避することができるからです。
sniffingを有効にする:set client.trnsport.sniffはtrueです。
*coordinating node**
アプリケーションでCoordinating Only Nodeに接続されたTransportClientを作成すると、必要なプラグインをすべてロードすることができます。例えば、検索プラグインです。
https://www.elastic.co/guide/en/elasticsearch/client/index.html
具体的な学習の説明
maven依存
org.apache.logging.log4j
log4j-api
2.7
org.apache.logging.log4j
log4j-core
2.7
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
rootLogger.level = info
rootLogger.appenderRef.console.ref = console
org.apache.logging.log4j
log4j-to-slf4j
2.7
org.slf4j
slf4j-api
1.7.21
私たちはSLF 4 Jに関する多くの実装でこのページを詳細に見ることができます。例として、ここではSLF 4 J-simpleを使って展示しています。
org.slf4j
slf4j-simple
1.7.21
JArパッケージの処理依存衝突jarパケット衝突は、Gava and Jodaのような第三者依存によって処理される。例えばes(以後、凡是elasticsearch略称es)はJoda 2.8を使用し、あなたのjavaコードはJoda 2.1を使用します。
じゃ、また二つの方法でこの問題を解決できます。
方式1
コードバージョンを更新します。
方式二
衝突の依存性を再読み込みして、あなたのプロジェクトまたはesおよびes clientに関連したプラグインに必要なバージョンと一致させます。詳細な操作方法はここを参照してください。
包装は依存のjarの包みを含みます。
あなたのアプリケーションがすべての依存性を持つjarパッケージにパッケージ化されていると言いたいなら、maven-asembly-pluginを使用することはできません。META-INF/servicesディレクトリ構造を処理できないので、Maven-shard-pluginを使用するべきです。その構成は以下の通りです。
org.apache.maven.plugins
maven-shade-plugin
2.4.1
package
shade
注意:もしあなたのアプリケーションの入り口のメインプログラムmain.classをjarパッケージに入れて実行したいなら、次のような操作が必要です。
org.elasticsearch.demo.Generate
プロジェクトの展開はJBoss EAP 6 module.ElasticsearchとLucene clasesは同じJBoss moduleに配置する必要があります。
設定module.xmlファイルは以下の通りです。
補足:Luceneは全文検索と検索のためのオープンソースライブラリです。Luceneは現在およびここ数年で最も人気のある無料Java情報検索プログラムライブラリです。よく情報検索ライブラリに言及しますが、検索エンジンと関係がありますが、情報検索ライブラリと検索エンジンを混同するべきではありません。client
様々な方法でJava clientを使うことができます。
一番簡単にclientを取得する方法
クラスタに接続されたTransport Clientを通じて
注意:clientのメインプログラムバージョンはクラスタ内のノードと一致しなければなりません。少し違っていると、いくつかの追加機能が使えなくなります。Clienntsはclusterのバージョンと一致します。
Transport Cient
Transport Clientはthe transportモジュールを使ってElasticsearch clusterとリモート接続しています。クラスタに参加していません。1つ以上の転送アドレスを取得して、round robin fashionで。操作ごとに通信する。
// on startup
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));
// on shutdown
client.close();
使用するクラスタ名が「elasticsearch」でない場合、クラスタ名を設定する必要があります。Settings settings = Settings.builder()
.put("cluster.name", "myClusterName").build();
TransportClient client = new PreBuiltTransportClient(settings);
//Add transport addresses and do something with the client...
鼻息の特徴とは、スニファーフィーチャーです。Transport clientは、新しいホスト原理の説明を動的に追加したり、古いホスト原理の説明を削除したりすることができます。sniffingが有効にされた時には、transport clientは内部に接続されます。addTransport Addressによって作成されたノードリストを呼び出します。その後、Transport clientは、これらのノードの内部クラスタ状態APIを呼び出して、利用可能なデータノードを発見します。このclientの内部ノードリストは、これらのデータノードだけで代替されます。
2,このデータリストはデフォルトでは5秒ごとに更新されます。
3,snifferが接続しているipアドレスはすべてesの構成で定義されています。
4,このリストは、初期ノードがデータノードではない場合、その接続された初期ノードを含んでいないかもしれない。
例えば、あなたが初期化してホストノードを接続した場合、sniffingの後、このホストノードへのアクセスを要求することなく、他の任意のデータノードへのアクセスを要求します。非データノードを排除することは、非データマスタノードの検索ブロックを回避することができるからです。
sniffingを有効にする:set client.trnsport.sniffはtrueです。
Settings settings = Settings.settingsBuilder()
.put("client.transport.sniff", true).build();
TransportClient client = new PreBuiltTransportClient(settings);
他のtransport clientパラメータ設定の説明:client.transport.ignore_cluster_name
trueに設定すると、接続されているノードのクラスタ名の有効性を無視して検証する(since 0.9.4)client.transport.ping_timeout
pingノードの動作応答時間を待つ。デフォルト5 s.client.transport.nodes_sampler_interval
sample/pingノードリストと接続するノードの周波数.デフォルト5 s.*coordinating node**
, , , coordinating node , , , . 。
Coordinating only nodes , . , ,
Coordinating only nodes
Connecting a Client to a Coordinating Only NodeアプリケーションでCoordinating Only Nodeに接続されたTransportClientを作成すると、必要なプラグインをすべてロードすることができます。例えば、検索プラグインです。