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
  • に加入する必要があります。
    
        org.apache.logging.log4j
        log4j-api
        2.7
    
    
        org.apache.logging.log4j
        log4j-core
        2.7
    
    
  • は、classipathパスでlogl 4 j 2のプロファイルを追加します。例えば、src/main/resource projectディレクトリの下のlogl 4 j.properties:
  • appender.console.type = Console
    appender.console.name = console
    appender.console.layout.type = PatternLayout
    
    rootLogger.level = info
    rootLogger.appenderRef.console.ref = console
    
  • SLF 4 Jを使うには、以下のようなものが必要です。
  • 
        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を使うことができます。
  • は、既存のクラスタにおいて、標準インデックス(index)、取得、削除、検索動作
  • を実行する。
  • は、1つの実行中のクラスタで、管理タスク
  • を実行する。
    一番簡単に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_nametrueに設定すると、接続されているノードのクラスタ名の有効性を無視して検証する(since 0.9.4)client.transport.ping_timeoutpingノードの動作応答時間を待つ。デフォルト5 s.client.transport.nodes_sampler_intervalsample/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を作成すると、必要なプラグインをすべてロードすることができます。例えば、検索プラグインです。