Files
doc-exports/docs/css/umn/css_01_0068.html
zhengxiu 93d856d5c5 css umn 25.6.0 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: zhengxiu <zhengxiu@huawei.com>
Co-committed-by: zhengxiu <zhengxiu@huawei.com>
2025-11-25 11:34:43 +00:00

590 lines
75 KiB
HTML

<a name="EN-US_TOPIC_0000001945377010"></a><a name="EN-US_TOPIC_0000001945377010"></a>
<h1 class="topictitle1">Accessing an Elasticsearch Cluster Using Spring Boot</h1>
<div id="body8662426"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p17703723205614">You can access a CSS cluster using Spring Boot. Spring Boot can connect to a cluster in any of the following ways:</p>
<ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ul18513748121316"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li19513134810130"><a href="#EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section197550282614">Accessing an HTTP Cluster Through Spring Boot</a>: applicable to clusters in non-security mode and clusters in security mode+HTTP</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li582117495264"><a href="#EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section1523020817518">Using Spring Boot to Access an HTTPS Cluster (Without Using Any Security Certificate)</a>: suitable for clusters in security mode+HTTPS</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li0513124814132"><a href="#EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section1368184211106">Using Spring Boot to Access an HTTPS Cluster (Using a Security Certificate)</a>: suitable for clusters in security mode+HTTPS</li></ul>
<div class="note" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_note88218318203"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p14821630208">For details about how to use Spring Boot, see the official document: <a href="https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/" target="_blank" rel="noopener noreferrer">https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/</a></p>
</div></div>
<div class="section" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section15374261139"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ul4325133835512"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li432603885511">The Elasticsearch High Level REST Client version should match the Elasticsearch version. For example, use High Level REST Client 7.10.2 to access an Elasticsearch 7.10.2 cluster.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li984413409559">This section uses Spring Boot 2.5.5 as an example to describe how to connect Spring Boot to a cluster. The corresponding Spring Data Elasticsearch version is 4.2.<em id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_i11306123919383">x</em>.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section132734369419"><h4 class="sectiontitle">Prerequisites</h4><ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ul115524012184"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li181191829144220">The CSS cluster is available.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li578832518434">Ensure that the server running Java can communicate with the CSS cluster.</li><li id="EN-US_TOPIC_0000001945377010__li578832518434">Depending on the network configuration method used, obtain the cluster access address. For details, see <a href="css_01_0190.html#EN-US_TOPIC_0000001975823337__section855085010198">Network Configuration</a>.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li551945111016">Install JDK 1.8 on the server. You can download JDK 1.8 from: <a href="https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank" rel="noopener noreferrer">https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html</a></li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li222181418235">Create a Spring Boot project.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li7446164115186">Declare Java dependencies.<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p944674119185"><a name="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li7446164115186"></a><a name="en-us_topic_0000001961178861_li7446164115186"></a><em id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_i1881973620595">7.10.2</em> indicates the version of the Elasticsearch Java client.</p>
<ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ul1626619015197"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li793695731817">Maven mode:<pre class="screen" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_screen344644110182">&lt;parent&gt;
&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
&lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
&lt;version&gt;2.5.5&lt;/version&gt;
&lt;/parent&gt;
&lt;dependencies&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
&lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
&lt;artifactId&gt;spring-boot-starter-data-elasticsearch&lt;/artifactId&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.elasticsearch.client&lt;/groupId&gt;
&lt;artifactId&gt;elasticsearch-rest-high-level-client&lt;/artifactId&gt;
&lt;version&gt;<i><span class="varname" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_varname155302046105913">7.10.2</span></i>&lt;/version&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;</pre>
</li></ul>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section197550282614"><a name="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section197550282614"></a><a name="en-us_topic_0000001961178861_section197550282614"></a><h4 class="sectiontitle">Accessing an HTTP Cluster Through Spring Boot</h4><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p103482430218">This scenario applies to clusters in non-security mode or clusters in security mode+HTTP.</p>
<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p7387545142616">Configuration file:</p>
<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_screen11598123210289"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">elasticsearch</span><span class="p">.</span><span class="na">url</span><span class="o">=</span><span class="n">host1</span><span class="p">:</span><span class="mi">9200</span><span class="p">,</span><span class="n">host2</span><span class="p">:</span><span class="mi">9200</span>
<span class="c1">// You do not need to configure the following two lines for a non-security cluster.</span>
<span class="n">elasticsearch</span><span class="p">.</span><span class="na">username</span><span class="o">=</span><span class="n">username</span>
<span class="n">elasticsearch</span><span class="p">.</span><span class="na">password</span><span class="o">=</span><span class="n">password</span>
</pre></div></td></tr></table></div>
</div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_table139354125176" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Parameter description</caption><thead align="left"><tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_row15833437142513"><th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.6.5.2.3.1.1"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p198331837112510">Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.6.5.2.3.1.2"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1783383762518">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_row383320375257"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.6.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p15833153752514">host</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.6.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p18833143722511">IP address for accessing the Elasticsearch cluster.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_row148340375259"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.6.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1834153762511">username</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.6.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1183412376255">Username for accessing the cluster.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_row208346377257"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.6.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p12834183715254">password</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.6.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1083473782518">Password of the user.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p154912187318">Code:</p>
<div class="note" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_note4308415102815"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ul1540814317282"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li11408731132820"><strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b1621392614252">com.xxx</strong> indicates the project directory, for example, <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b464202814252">com.company.project</strong>.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li540843122814"><strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b1437293592517">com.xxx.repository</strong> is the repository directory, which is defined by <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b687184210257">extends org.springframework.data.elasticsearch.repository.ElasticsearchRepository</strong>.</li></ul>
</div></div>
<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_screen17911132817318"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span></pre></div></td><td class="code"><div><pre><span></span><span class="kn">package</span><span class="w"> </span><span class="nn">com.xxx.configuration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.elasticsearch.client.RestHighLevelClient</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.beans.factory.annotation.Value</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.Bean</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.ComponentScan</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.Configuration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.client.ClientConfiguration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.client.RestClients</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories</span><span class="p">;</span>
<span class="nd">@Configuration</span>
<span class="nd">@EnableElasticsearchRepositories</span><span class="p">(</span><span class="n">basePackages</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;com.xxx.repository&quot;</span><span class="p">)</span>
<span class="nd">@ComponentScan</span><span class="p">(</span><span class="n">basePackages</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;com.xxx&quot;</span><span class="p">)</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Config</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">AbstractElasticsearchConfiguration</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.url}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchUrl</span><span class="p">;</span>
<span class="w"> </span><span class="c1">// You do not need to set the following two parameters for a non-security cluster.</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.username}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchUsername</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.password}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchPassword</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="nd">@Bean</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">RestHighLevelClient</span><span class="w"> </span><span class="nf">elasticsearchClient</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">ClientConfiguration</span><span class="w"> </span><span class="n">clientConfiguration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ClientConfiguration</span><span class="p">.</span><span class="na">builder</span><span class="p">()</span>
<span class="w"> </span><span class="p">.</span><span class="na">connectedTo</span><span class="p">(</span><span class="n">StringHostParse</span><span class="p">(</span><span class="n">elasticsearchUrl</span><span class="p">))</span>
<span class="w"> </span><span class="c1">// For a non-security cluster, there is no need to configure withBasicAuth.</span>
<span class="w"> </span><span class="p">.</span><span class="na">withBasicAuth</span><span class="p">(</span><span class="n">elasticsearchUsername</span><span class="p">,</span><span class="w"> </span><span class="n">elasticsearchPassword</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">RestClients</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">clientConfiguration</span><span class="p">).</span><span class="na">rest</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="nf">StringHostParse</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">hostAndPorts</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">hostAndPorts</span><span class="p">.</span><span class="na">split</span><span class="p">(</span><span class="s">&quot;,&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section1523020817518"><a name="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section1523020817518"></a><a name="en-us_topic_0000001961178861_section1523020817518"></a><h4 class="sectiontitle">Using Spring Boot to Access an HTTPS Cluster (Without Using Any Security Certificate)</h4><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p12863121582013">You can connect to a cluster in Security mode + HTTPS without using any security certificate.</p>
<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p594391111819">Configuration file:</p>
<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_screen16943713187"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">elasticsearch</span><span class="p">.</span><span class="na">url</span><span class="o">=</span><span class="n">host1</span><span class="p">:</span><span class="mi">9200</span><span class="p">,</span><span class="n">host2</span><span class="p">:</span><span class="mi">9200</span>
<span class="n">elasticsearch</span><span class="p">.</span><span class="na">username</span><span class="o">=</span><span class="n">username</span>
<span class="n">elasticsearch</span><span class="p">.</span><span class="na">password</span><span class="o">=</span><span class="n">password</span>
</pre></div></td></tr></table></div>
</div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_table271814200188" frame="border" border="1" rules="all"><caption><b>Table 2 </b>Parameter description</caption><thead align="left"><tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row15833437142513"><th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.7.5.2.3.1.1"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p198331837112510">Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.7.5.2.3.1.2"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1783383762518">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row383320375257"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.7.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p15833153752514">host</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.7.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p18833143722511">IP address for accessing the Elasticsearch cluster.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row148340375259"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.7.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1834153762511">username</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.7.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1183412376255">Username for accessing the cluster.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row208346377257"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.7.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p12834183715254">password</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.7.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1083473782518">Password of the user.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p179433191819">Code:</p>
<div class="note" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_note13356131602911"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ul187776232294"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li3777172310295"><strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b16549162822519">com.xxx</strong> indicates the project directory, for example, <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b115491428112515">com.company.project</strong>.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li477710236292"><strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b159599438250">com.xxx.repository</strong> is the repository directory, which is defined by <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b16959144332511">extends org.springframework.data.elasticsearch.repository.ElasticsearchRepository</strong>.</li></ul>
</div></div>
<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_screen19969431201919"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span>
<span class="normal">44</span>
<span class="normal">45</span>
<span class="normal">46</span>
<span class="normal">47</span>
<span class="normal">48</span>
<span class="normal">49</span>
<span class="normal">50</span>
<span class="normal">51</span>
<span class="normal">52</span>
<span class="normal">53</span>
<span class="normal">54</span>
<span class="normal">55</span>
<span class="normal">56</span>
<span class="normal">57</span>
<span class="normal">58</span>
<span class="normal">59</span>
<span class="normal">60</span>
<span class="normal">61</span>
<span class="normal">62</span>
<span class="normal">63</span>
<span class="normal">64</span>
<span class="normal">65</span>
<span class="normal">66</span>
<span class="normal">67</span>
<span class="normal">68</span>
<span class="normal">69</span>
<span class="normal">70</span>
<span class="normal">71</span></pre></div></td><td class="code"><div><pre><span></span><span class="kn">package</span><span class="w"> </span><span class="nn">com.xxx.configuration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.elasticsearch.client.RestHighLevelClient</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.beans.factory.annotation.Value</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.Bean</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.ComponentScan</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.Configuration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.client.ClientConfiguration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.client.RestClients</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.KeyManagementException</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.NoSuchAlgorithmException</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.SecureRandom</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.cert.CertificateException</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.cert.X509Certificate</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.HostnameVerifier</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.SSLContext</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.SSLSession</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.TrustManager</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.X509TrustManager</span><span class="p">;</span>
<span class="nd">@Configuration</span>
<span class="nd">@EnableElasticsearchRepositories</span><span class="p">(</span><span class="n">basePackages</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;com.xxx.repository&quot;</span><span class="p">)</span>
<span class="nd">@ComponentScan</span><span class="p">(</span><span class="n">basePackages</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;com.xxx&quot;</span><span class="p">)</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Config</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">AbstractElasticsearchConfiguration</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.url}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchUrl</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.username}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchUsername</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.password}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchPassword</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="nd">@Bean</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">RestHighLevelClient</span><span class="w"> </span><span class="nf">elasticsearchClient</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">SSLContext</span><span class="w"> </span><span class="n">sc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">sc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SSLContext</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="s">&quot;SSL&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">sc</span><span class="p">.</span><span class="na">init</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="n">trustAllCerts</span><span class="p">,</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SecureRandom</span><span class="p">());</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">KeyManagementException</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">NoSuchAlgorithmException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">ClientConfiguration</span><span class="w"> </span><span class="n">clientConfiguration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ClientConfiguration</span><span class="p">.</span><span class="na">builder</span><span class="p">()</span>
<span class="w"> </span><span class="p">.</span><span class="na">connectedTo</span><span class="p">(</span><span class="n">StringHostParse</span><span class="p">(</span><span class="n">elasticsearchUrl</span><span class="p">))</span>
<span class="w"> </span><span class="p">.</span><span class="na">usingSsl</span><span class="p">(</span><span class="n">sc</span><span class="p">,</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">NullHostNameVerifier</span><span class="p">())</span>
<span class="w"> </span><span class="p">.</span><span class="na">withBasicAuth</span><span class="p">(</span><span class="n">elasticsearchUsername</span><span class="p">,</span><span class="w"> </span><span class="n">elasticsearchPassword</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">RestClients</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">clientConfiguration</span><span class="p">).</span><span class="na">rest</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="nf">StringHostParse</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">hostAndPorts</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">hostAndPorts</span><span class="p">.</span><span class="na">split</span><span class="p">(</span><span class="s">&quot;,&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">TrustManager</span><span class="o">[]</span><span class="w"> </span><span class="n">trustAllCerts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TrustManager</span><span class="o">[]</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">X509TrustManager</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">checkClientTrusted</span><span class="p">(</span><span class="n">X509Certificate</span><span class="o">[]</span><span class="w"> </span><span class="n">chain</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">authType</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">CertificateException</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">checkServerTrusted</span><span class="p">(</span><span class="n">X509Certificate</span><span class="o">[]</span><span class="w"> </span><span class="n">chain</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">authType</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">CertificateException</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">X509Certificate</span><span class="o">[]</span><span class="w"> </span><span class="nf">getAcceptedIssuers</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">};</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">NullHostNameVerifier</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">HostnameVerifier</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">verify</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">arg0</span><span class="p">,</span><span class="w"> </span><span class="n">SSLSession</span><span class="w"> </span><span class="n">arg1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section1368184211106"><a name="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_section1368184211106"></a><a name="en-us_topic_0000001961178861_section1368184211106"></a><h4 class="sectiontitle">Using Spring Boot to Access an HTTPS Cluster (Using a Security Certificate)</h4><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p15237154812615">You can use a security certificate to connect to a cluster in security mode + HTTPS.</p>
<ol id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ol5745191917819"><li id="EN-US_TOPIC_0000001945377010__li16741452132212"><a href="#EN-US_TOPIC_0000001945377010__section16306122401412">Obtaining and Uploading a Security Certificate</a>.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li12745319189"><strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b922145592019">application.properties</strong> configuration file:<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_screen0479184718254"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">elasticsearch</span><span class="p">.</span><span class="na">url</span><span class="o">=</span><span class="n">host1</span><span class="p">:</span><span class="mi">9200</span><span class="p">,</span><span class="n">host2</span><span class="p">:</span><span class="mi">9200</span>
<span class="n">elasticsearch</span><span class="p">.</span><span class="na">username</span><span class="o">=</span><span class="n">username</span>
<span class="n">elasticsearch</span><span class="p">.</span><span class="na">password</span><span class="o">=</span><span class="n">password</span>
</pre></div></td></tr></table></div>
</div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_table104944819262" frame="border" border="1" rules="all"><caption><b>Table 3 </b>Parameter description</caption><thead align="left"><tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row15833437142513_1"><th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.8.3.2.3.2.3.1.1"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p198331837112510_1">Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.8.3.2.3.2.3.1.2"><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1783383762518_1">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row383320375257_1"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.8.3.2.3.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p15833153752514_1">host</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.8.3.2.3.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p18833143722511_1">IP address for accessing the Elasticsearch cluster.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row148340375259_1"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.8.3.2.3.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1834153762511_1">username</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.8.3.2.3.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1183412376255_1">Username for accessing the cluster.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_row208346377257_1"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.8.3.2.3.2.3.1.1 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p12834183715254_1">password</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.8.3.2.3.2.3.1.2 "><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001945377010_en-us_topic_0000001961178861_en-us_topic_0000001238181826_p1083473782518_1">Password of the user.</p>
</td>
</tr>
</tbody>
</table>
</div>
</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li54804473254">Code:<div class="note" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_note72721249102914"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_ul1762115329311"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li462133273117"><strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b13550328102519">com.xxx</strong> indicates the project directory, for example, <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b19550162852514">com.company.project</strong>.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_li162103213317"><strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b09612437252">com.xxx.repository</strong> is the repository directory, which is defined by <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_b15961943162515">extends org.springframework.data.elasticsearch.repository.ElasticsearchRepository</strong>.</li></ul>
</div></div>
<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_screen1210053114263"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span>
<span class="normal">44</span>
<span class="normal">45</span>
<span class="normal">46</span>
<span class="normal">47</span>
<span class="normal">48</span>
<span class="normal">49</span>
<span class="normal">50</span>
<span class="normal">51</span>
<span class="normal">52</span>
<span class="normal">53</span>
<span class="normal">54</span>
<span class="normal">55</span>
<span class="normal">56</span>
<span class="normal">57</span>
<span class="normal">58</span>
<span class="normal">59</span>
<span class="normal">60</span>
<span class="normal">61</span>
<span class="normal">62</span>
<span class="normal">63</span>
<span class="normal">64</span>
<span class="normal">65</span>
<span class="normal">66</span>
<span class="normal">67</span>
<span class="normal">68</span>
<span class="normal">69</span>
<span class="normal">70</span>
<span class="normal">71</span>
<span class="normal">72</span>
<span class="normal">73</span>
<span class="normal">74</span>
<span class="normal">75</span>
<span class="normal">76</span>
<span class="normal">77</span>
<span class="normal">78</span>
<span class="normal">79</span>
<span class="normal">80</span>
<span class="normal">81</span>
<span class="normal">82</span>
<span class="normal">83</span>
<span class="normal">84</span>
<span class="normal">85</span>
<span class="normal">86</span>
<span class="normal">87</span>
<span class="normal">88</span>
<span class="normal">89</span>
<span class="normal">90</span>
<span class="normal">91</span>
<span class="normal">92</span>
<span class="normal">93</span>
<span class="normal">94</span>
<span class="normal">95</span>
<span class="normal">96</span></pre></div></td><td class="code"><div><pre><span></span><span class="kn">package</span><span class="w"> </span><span class="nn">com.xxx.configuration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.elasticsearch.client.RestHighLevelClient</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.beans.factory.annotation.Value</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.Bean</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.ComponentScan</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.context.annotation.Configuration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.client.ClientConfiguration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.client.RestClients</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.io.File</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.io.FileInputStream</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.io.InputStream</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.KeyStore</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.SecureRandom</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.cert.CertificateException</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.security.cert.X509Certificate</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.HostnameVerifier</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.SSLContext</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.SSLSession</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.TrustManager</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.TrustManagerFactory</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.X509TrustManager</span><span class="p">;</span>
<span class="nd">@Configuration</span>
<span class="nd">@EnableElasticsearchRepositories</span><span class="p">(</span><span class="n">basePackages</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;com.xxx.repository&quot;</span><span class="p">)</span>
<span class="nd">@ComponentScan</span><span class="p">(</span><span class="n">basePackages</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;com.xxx&quot;</span><span class="p">)</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Config</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">AbstractElasticsearchConfiguration</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.url}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchUrl</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.username}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchUsername</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Value</span><span class="p">(</span><span class="s">&quot;${elasticsearch.password}&quot;</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">elasticsearchPassword</span><span class="p">;</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="nd">@Bean</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">RestHighLevelClient</span><span class="w"> </span><span class="nf">elasticsearchClient</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">SSLContext</span><span class="w"> </span><span class="n">sc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">TrustManager</span><span class="o">[]</span><span class="w"> </span><span class="n">tm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="k">new</span><span class="w"> </span><span class="n">MyX509TrustManager</span><span class="p">(</span><span class="n">certFilePath</span><span class="p">,</span><span class="w"> </span><span class="n">certPassword</span><span class="p">)};</span>
<span class="w"> </span><span class="n">sc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SSLContext</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="s">&quot;SSL&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;SunJSSE&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">sc</span><span class="p">.</span><span class="na">init</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="n">tm</span><span class="p">,</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SecureRandom</span><span class="p">());</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">ClientConfiguration</span><span class="w"> </span><span class="n">clientConfiguration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ClientConfiguration</span><span class="p">.</span><span class="na">builder</span><span class="p">()</span>
<span class="w"> </span><span class="p">.</span><span class="na">connectedTo</span><span class="p">(</span><span class="n">StringHostParse</span><span class="p">(</span><span class="n">elasticsearchUrl</span><span class="p">))</span>
<span class="w"> </span><span class="p">.</span><span class="na">usingSsl</span><span class="p">(</span><span class="n">sc</span><span class="p">,</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">NullHostNameVerifier</span><span class="p">())</span>
<span class="w"> </span><span class="p">.</span><span class="na">withBasicAuth</span><span class="p">(</span><span class="n">elasticsearchUsername</span><span class="p">,</span><span class="w"> </span><span class="n">elasticsearchPassword</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">RestClients</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">clientConfiguration</span><span class="p">).</span><span class="na">rest</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="nf">StringHostParse</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">hostAndPorts</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">hostAndPorts</span><span class="p">.</span><span class="na">split</span><span class="p">(</span><span class="s">&quot;,&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">MyX509TrustManager</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">X509TrustManager</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">X509TrustManager</span><span class="w"> </span><span class="n">sunJSSEX509TrustManager</span><span class="p">;</span>
<span class="w"> </span><span class="n">MyX509TrustManager</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">certFilePath</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">certPassword</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">File</span><span class="w"> </span><span class="n">file</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="p">(</span><span class="n">certFilePath</span><span class="p">);</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">file</span><span class="p">.</span><span class="na">isFile</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Exception</span><span class="p">(</span><span class="s">&quot;Wrong Certification Path&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;Loading KeyStore &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">file</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&quot;...&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">InputStream</span><span class="w"> </span><span class="n">in</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span>
<span class="w"> </span><span class="n">KeyStore</span><span class="w"> </span><span class="n">ks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">KeyStore</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="s">&quot;JKS&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">ks</span><span class="p">.</span><span class="na">load</span><span class="p">(</span><span class="n">in</span><span class="p">,</span><span class="w"> </span><span class="n">certPassword</span><span class="p">.</span><span class="na">toCharArray</span><span class="p">());</span>
<span class="w"> </span><span class="n">TrustManagerFactory</span><span class="w"> </span><span class="n">tmf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">TrustManagerFactory</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="s">&quot;SunX509&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;SunJSSE&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">tmf</span><span class="p">.</span><span class="na">init</span><span class="p">(</span><span class="n">ks</span><span class="p">);</span>
<span class="w"> </span><span class="n">TrustManager</span><span class="o">[]</span><span class="w"> </span><span class="n">tms</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmf</span><span class="p">.</span><span class="na">getTrustManagers</span><span class="p">();</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">TrustManager</span><span class="w"> </span><span class="n">tm</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">tms</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">tm</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">X509TrustManager</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">sunJSSEX509TrustManager</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">X509TrustManager</span><span class="p">)</span><span class="w"> </span><span class="n">tm</span><span class="p">;</span>
<span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Exception</span><span class="p">(</span><span class="s">&quot;Couldn't initialize&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">checkClientTrusted</span><span class="p">(</span><span class="n">X509Certificate</span><span class="o">[]</span><span class="w"> </span><span class="n">chain</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">authType</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">CertificateException</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">checkServerTrusted</span><span class="p">(</span><span class="n">X509Certificate</span><span class="o">[]</span><span class="w"> </span><span class="n">chain</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">authType</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">CertificateException</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">X509Certificate</span><span class="o">[]</span><span class="w"> </span><span class="nf">getAcceptedIssuers</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">X509Certificate</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">NullHostNameVerifier</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">HostnameVerifier</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">verify</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">arg0</span><span class="p">,</span><span class="w"> </span><span class="n">SSLSession</span><span class="w"> </span><span class="n">arg1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001961178861_p837821642615">In the preceding command, <i><span class="varname" id="EN-US_TOPIC_0000001945377010__varname16701203804619">certFilePath</span></i> and <i><span class="varname" id="EN-US_TOPIC_0000001945377010__varname17905174418472">certPassword</span></i> indicate the path and password of the .jks certificate, respectively.</p>
</li></ol>
</div>
<div class="section" id="EN-US_TOPIC_0000001945377010__section16306122401412"><a name="EN-US_TOPIC_0000001945377010__section16306122401412"></a><a name="section16306122401412"></a><h4 class="sectiontitle">Obtaining and Uploading a Security Certificate</h4><p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_p14303249141014">To access a security-mode Elasticsearch cluster that uses HTTPS, a security certificate must be loaded. Perform the following steps to obtain the security certificate and upload it to the client:</p>
<ol id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_ol882703218108"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_li1182773217101">Obtain the security certificate <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_b53005936784837">CloudSearchService.cer</strong>.<ol type="a" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_ol0827133291012"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_en-us_topic_0000001933318570_li1798555810535"><span id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_ph523831318386">Log in to the CSS management console.</span></li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_li164461631123811">In the navigation pane on the left, choose <span class="uicontrol" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_uicontrol86487267685117"><b>Clusters &gt; Elasticsearch</b></span>.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_li184472316387">In the cluster list, click the name of the target cluster. The cluster information page is displayed.</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_en-us_topic_0000001933318570_li146461036135810">Click the <span class="wintitle" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_wintitle326154154412"><b>Overview</b></span> tab. In the <span class="wintitle" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_wintitle1076156104413"><b>Configuration</b></span> area, click <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_b1317531104720">Download Certificate</strong> next to <span class="uicontrol" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_uicontrol263216261449"><b>HTTPS Access</b></span>.<div class="fignone" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_en-us_topic_0000001223914344_fig1877019549519"><span class="figcap"><b>Figure 1 </b>Downloading a security certificate</span><br><span><img id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000002338102386_en-us_topic_0000001223914344_image2793173420519" src="images/en-us_image_0000002412557593.png"></span></div>
</li></ol>
</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_li1182718329108">Convert the security certificate <strong id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000001961178813_b69670521924">CloudSearchService.cer</strong>. Upload the downloaded security certificate to the client and use keytool to convert the <span class="filepath" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_filepath282793217101"><b>.cer</b></span> certificate into a <span class="filepath" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_filepath1582783210101"><b>.jks</b></span> certificate that can be read by Java.<ul id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_ul2082783281010"><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_li9827133218109">In Linux, run the following command to convert the certificate:<pre class="screen" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_screen182712328102">keytool -import -alias <i><span class="varname" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_varname2827153211109">newname</span></i> -keystore ./truststore.jks -file ./CloudSearchService.cer </pre>
</li><li id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_li16827432171014">In Windows, run the following command to convert the certificate:<pre class="screen" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_screen10827232131020">keytool -import -alias <i><span class="varname" id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_varname1282823281016">newname</span></i> -keystore .\truststore.jks -file .\CloudSearchService.cer</pre>
</li></ul>
<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_p188281132101015">In the preceding command, <em id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_en-us_topic_0000001961178813_i2126133912318">newname</em> indicates the user-defined certificate name.</p>
<p id="EN-US_TOPIC_0000001945377010__en-us_topic_0000001972375889_p0828193281015">After this command is executed, you will be prompted to set the certificate password and confirm the password. Securely store the password. It will be used for accessing the cluster.</p>
</li></ol>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="css_01_0064.html">Accessing an Elasticsearch Cluster Using Java</a></div>
</div>
</div>