検索
ホームページJava&#&チュートリアルJavaを使用してElasticsearchクライアントを構築し、APIを呼び出すにはどうすればよいですか?

    #Elasticsearch は、クライアントを構築することによって、Java 呼び出しインターフェイスの豊富なセットを外部に提供します。一般に、クライアントはクラスタ情報クライアントとデータ (インデックス) クライアントの 2 種類に分類されます。これら 2 つのカテゴリは、一般操作と管理操作に分類できます。

    クライアントの継承関係

    (バージョン 1.5、他のバージョンは異なる場合があります):

    Javaを使用してElasticsearchクライアントを構築し、APIを呼び出すにはどうすればよいですか?

    この継承を見ると明確にわかります。関係図 クライアントの実装と機能を理解する。合計 3 つのカテゴリ (クライアント、インデックスAdminClient、および ClusterAdminClient) があります。独自の実装クラスがありますが、最終的にはクライアント インターフェイスを通じて外部サービスを提供します。一般的な外部インターフェイスとして、クライアントは最初に admin() メソッドを通じて管理関連の操作を組み合わせ、データとクラスターに対するすべての一般的な操作も提供します。

    メソッドの実装

    すべてのインターフェイスは 2 つの方法で非同期呼び出しを実装します。1 つは ActionFuture を返す方法、もう 1 つは ActionListener を受け入れる方法です。

    index メソッドを例に挙げます

    以下に示すように

    ActionFutureindex(IndexRequest request) ;

    voidindex( IndexRequest request 、ActionListener リスナー);

    最初のメソッドはフューチャーを返し、2 番目のメソッドはリスナーを渡す必要があります。これらは、非同期実装の 2 つの基本的な方法でもあります。クライアントはファサード モードを使用します。すべての実装は AbstractClient クラスにあります。index メソッドを例にとると、コードは次のとおりです:

    @Override
        public ActionFuture<IndexResponse> index(final IndexRequest request) {
            return execute(IndexAction.INSTANCE, request);
        }
        @Override
        public void index(final IndexRequest request, final ActionListener<IndexResponse> listener) {
            execute(IndexAction.INSTANCE, request, listener);
        }

    実装は上記のとおりです。ファサードモードは、すべてのメソッドがクライアントに統合されていますが、実行プロセスは対応するアクションで実行されるためです。実行メソッドでは、対応するアクション インスタンスが取得され、実際のロジックが対応するトランザクション アクションに実装されます。

    execute メソッド コード

    は次のとおりです。

    @SuppressWarnings("unchecked")
        @Override
        public <Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder, Client>> ActionFuture<Response> execute(Action<Request, Response, RequestBuilder, Client> action, Request request) {
            headers.applyTo(request);
            TransportAction<Request, Response> transportAction = actions.get((ClientAction)action);
            return transportAction.execute(request);
        }
        @SuppressWarnings("unchecked")
        @Override
        public <Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder, Client>> void execute(Action<Request, Response, RequestBuilder, Client> action, Request request, ActionListener<Response> listener) {
            headers.applyTo(request);
            TransportAction<Request, Response> transportAction = actions.get((ClientAction)action);
            transportAction.execute(request, listener);
        }

    各操作は対応する TransportAction に対応し、これらの TransportAction が最終的な実行者になります。ここでは簡単に説明するためにインデックスを例に挙げますが、後ほどインデックス関数の分析でこのような結果がさらに表示されます。

    public class IndexAction extends ClientAction<IndexRequest, IndexResponse, IndexRequestBuilder> {
        public static final IndexAction INSTANCE = new IndexAction();
        public static final String NAME = "indices:data/write/index";
        private IndexAction() {
            super(NAME);
        }
        @Override
        public IndexResponse newResponse() {
            return new IndexResponse();
        }
        @Override
        public IndexRequestBuilder newRequestBuilder(Client client) {
            return new IndexRequestBuilder(client);
        }
    }

    IndexAction では、NAME といくつかの簡単なメソッドが単純に定義されています。この名前は、起動時に TransportHandler へのキーとして TransportService に登録されます。実行メソッドでは、前のコードで示したように、アクションに応じて TransportAction が取り出されます。実際の実行ロジックは InternalTransportClient にありますが、その実装についてはここでは省略し、後ほど詳しく分析します。これらすべてのアクションの登録は actionModule に実装されており、登録プロセスは後でアクションとともに分析されます。

    以上がJavaを使用してElasticsearchクライアントを構築し、APIを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    JVMはオペレーティングシステムAPIの違いをどのように処理しますか?JVMはオペレーティングシステムAPIの違いをどのように処理しますか?Apr 27, 2025 am 12:18 AM

    JVMは、JavanativeInterface(JNI)およびJava Standard Libraryを介してオペレーティングシステムのAPIの違いを処理します。1。JNIでは、Javaコードがローカルコードを呼び出し、オペレーティングシステムAPIと直接対話できます。 2. Java Standard Libraryは統一されたAPIを提供します。これは、異なるオペレーティングシステムAPIに内部的にマッピングされ、コードがプラットフォーム間で実行されるようにします。

    Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Apr 27, 2025 am 12:15 AM

    modularitydoesnotdirectlyectlyectjava'splatformindepensence.java'splatformendepenceismaindainededainededainededaindainedaindained bythejvm、butmodularityinfluencesApplucationStructure andmanagement、間接的なインパクチャプラット形成依存性.1)

    ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?Apr 27, 2025 am 12:06 AM

    bytecodeinjavaisthe intermediaterepresentationthateNablesplatformindepence.1)javacodeis compiledintobytecodestoredin.classfiles.2)thejvminterpretsorcompilesthisbytecodeintomachinecodeatime、

    Javaがプラットフォームに依存しない言語と見なされるのはなぜですか?Javaがプラットフォームに依存しない言語と見なされるのはなぜですか?Apr 27, 2025 am 12:03 AM

    javaachievesplatformedenceTheTheTheJavavirtualMachine(JVM)、これは、javacodeisisisisisissompiledIntobytecode.2)javaCodeisisisisissompiledevedevicetecode.2)

    グラフィカルユーザーインターフェイス(GUI)は、Javaのプラットフォーム独立性の課題をどのように提示できますか?グラフィカルユーザーインターフェイス(GUI)は、Javaのプラットフォーム独立性の課題をどのように提示できますか?Apr 27, 2025 am 12:02 AM

    Javagui開発におけるプラットフォームの独立性は課題に直面していますが、Swing、Javafx、統一外観、パフォーマンス最適化、サードパーティライブラリ、クロスプラットフォームテストを使用することで対処できます。 Javaguiの開発は、クロスプラットフォームの一貫性を提供することを目的としたAWTとSwingに依存していますが、実際の効果はオペレーティングシステムごとに異なります。ソリューションには以下が含まれます。1)SwingおよびJavafxをGUIツールキットとして使用します。 2)uimanager.setlookandfeel()を介して外観を統合します。 3)さまざまなプラットフォームに合わせてパフォーマンスを最適化します。 4)ApachepivotやSWTなどのサードパーティライブラリを使用する。 5)一貫性を確保するために、クロスプラットフォームテストを実施します。

    Java開発のどの側面がプラットフォームに依存していますか?Java開発のどの側面がプラットフォームに依存していますか?Apr 26, 2025 am 12:19 AM

    javadevelopmentisnotentirelylylypratform-IndopentDuetoseveralfactors.1)jvmvariationsaffectperformanceandbehavioracrossdifferentos.2)nativeLibrariesviajniintroducePlatform-specificissues.3)giaiasystemsdifferbeTioneplateplatifflics.4)

    さまざまなプラットフォームでJavaコードを実行するときにパフォーマンスの違いはありますか?なぜ?さまざまなプラットフォームでJavaコードを実行するときにパフォーマンスの違いはありますか?なぜ?Apr 26, 2025 am 12:15 AM

    Javaコードは、さまざまなプラットフォームで実行するときにパフォーマンスの違いがあります。 1)JVMの実装と最適化戦略は、OracleJDKやOpenJDKなどとは異なります。 2)メモリ管理やスレッドスケジューリングなどのオペレーティングシステムの特性もパフォーマンスに影響します。 3)適切なJVMを選択し、JVMパラメーターとコード最適化を調整することにより、パフォーマンスを改善できます。

    Javaのプラットフォームの独立性の制限は何ですか?Javaのプラットフォームの独立性の制限は何ですか?Apr 26, 2025 am 12:10 AM

    java'splatformindepentedencehaslimitationsincludingporformanceoverhead、versioncompatibulisisues、changleSwithnativeLibraryIntegration、プラットフォーム固有の機能、およびjvminStallation/maintenation。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    Dreamweaver Mac版

    Dreamweaver Mac版

    ビジュアル Web 開発ツール

    SecLists

    SecLists

    SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

    mPDF

    mPDF

    mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

    SublimeText3 英語版

    SublimeText3 英語版

    推奨: Win バージョン、コードプロンプトをサポート!

    VSCode Windows 64 ビットのダウンロード

    VSCode Windows 64 ビットのダウンロード

    Microsoft によって発売された無料で強力な IDE エディター