日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Elasticsearch Java Low Level REST Client(通用配置)

發(fā)布時(shí)間:2024/8/23 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch Java Low Level REST Client(通用配置) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Elasticsearch Java Low Level REST Client(通用配置)

通用配置

正如初始化中所解釋的,RestClientBuilder支持提供RequestConfigCallback和HttpClientConfigCallback,它們?cè)试SApache Async Http Client公開(kāi)的任何自定義。這些回調(diào)可以修改客戶端的某些特定行為,而不會(huì)覆蓋RestClient初始化的所有其他默認(rèn)配置,本節(jié)介紹一些需要為低級(jí)別Java REST Client進(jìn)行其他配置的常見(jiàn)方案。

超時(shí)

配置請(qǐng)求超時(shí)可以通過(guò)在通過(guò)其構(gòu)建器構(gòu)建RestClient時(shí)提供RequestConfigCallback實(shí)例來(lái)完成,該接口有一個(gè)方法接收org.apache.http.client.config.RequestConfig.Builder的實(shí)例作為參數(shù)并具有相同的返回類型,可以修改請(qǐng)求配置構(gòu)建器,然后返回。在以下示例中,我們將增加連接超時(shí)(默認(rèn)為1秒)和socket超時(shí)(默認(rèn)為30秒),我們也相應(yīng)地調(diào)整最大重試超時(shí)(默認(rèn)為30秒)。

RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200)).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {@Overridepublic RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {return requestConfigBuilder.setConnectTimeout(5000).setSocketTimeout(60000);}}).setMaxRetryTimeoutMillis(60000);

線程數(shù)

Apache Http Async Client默認(rèn)啟動(dòng)一個(gè)調(diào)度線程,以及連接管理器使用的許多工作線程,與本地檢測(cè)到的處理器數(shù)量一樣多(取決于Runtime.getRuntime().availableProcessors()的返回),線程數(shù)可以修改如下:

RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200)).setHttpClientConfigCallback(new HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {return httpClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build());}});

基本認(rèn)證

配置基本身份驗(yàn)證可以通過(guò)在通過(guò)其構(gòu)建器構(gòu)建RestClient時(shí)提供HttpClientConfigCallback來(lái)完成,該接口有一個(gè)方法接收org.apache.http.impl.nio.client.HttpAsyncClientBuilder的實(shí)例作為參數(shù)并具有相同的返回類型,可以修改http客戶端構(gòu)建器,然后返回。在以下示例中,我們?cè)O(shè)置了需要基本身份驗(yàn)證的默認(rèn)憑據(jù)提供程序。

final CredentialsProvider credentialsProvider =new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("user", "password"));RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200)).setHttpClientConfigCallback(new HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);}});

可以禁用搶占式身份驗(yàn)證,這意味著每個(gè)請(qǐng)求都將在沒(méi)有授權(quán)標(biāo)頭的情況下發(fā)送,以查看是否接受該請(qǐng)求,并且在接收到HTTP401響應(yīng)后,將重新發(fā)送與基本身份驗(yàn)證標(biāo)頭完全相同的請(qǐng)求,如果你希望這樣做,那么你可以通過(guò)HttpAsyncClientBuilder禁用它:

final CredentialsProvider credentialsProvider =new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("user", "password"));RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200)).setHttpClientConfigCallback(new HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {httpClientBuilder.disableAuthCaching(); return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);}});

httpClientBuilder.disableAuthCaching();?— 禁用搶占式身份驗(yàn)證。

加密通信

也可以通過(guò)HttpClientConfigCallback配置加密通信,作為參數(shù)接收的org.apache.http.impl.nio.client.HttpAsyncClientBuilder公開(kāi)了多種方法來(lái)配置加密通信:setSSLContext、setSSLSessionStrategy和setConnectionManager,按照最不重要的優(yōu)先順序排列,以下是一個(gè)例子:

KeyStore truststore = KeyStore.getInstance("jks"); try (InputStream is = Files.newInputStream(keyStorePath)) {truststore.load(is, keyStorePass.toCharArray()); } SSLContextBuilder sslBuilder = SSLContexts.custom().loadTrustMaterial(truststore, null); final SSLContext sslContext = sslBuilder.build(); RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "https")).setHttpClientConfigCallback(new HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {return httpClientBuilder.setSSLContext(sslContext);}});

如果未提供顯式配置,則將使用系統(tǒng)默認(rèn)配置。

其他

對(duì)于所需的任何其他必需配置,應(yīng)參考Apache HttpAsyncClient文檔:https://hc.apache.org/httpcomponents-asyncclient-4.1.x/。

如果你的應(yīng)用程序在安全管理器下運(yùn)行,則可能會(huì)受到JVM默認(rèn)策略的限制,即無(wú)限期緩存正主機(jī)名解析和負(fù)主機(jī)名解析10秒,如果你連接客戶端的主機(jī)的已解析地址隨時(shí)間變化,那么你可能希望修改默認(rèn)的JVM行為,可以通過(guò)將networkaddress.cache.ttl=<timeout>和networkaddress.cache.negative.ttl=<timeout>添加到Java安全策略來(lái)修改這些。

節(jié)點(diǎn)選擇器

客戶端以循環(huán)方式將每個(gè)請(qǐng)求發(fā)送到其中一個(gè)配置的節(jié)點(diǎn),可以選擇通過(guò)初始化客戶端時(shí)需要提供的節(jié)點(diǎn)選擇器來(lái)過(guò)濾節(jié)點(diǎn),這在啟用嗅探時(shí)很有用,以防只有HTTP請(qǐng)求才能觸發(fā)專用主節(jié)點(diǎn)。對(duì)于每個(gè)請(qǐng)求,客戶端將運(yùn)行最終配置的節(jié)點(diǎn)選擇器以過(guò)濾候選節(jié)點(diǎn),然后從剩余的節(jié)點(diǎn)中選擇列表中的下一個(gè)節(jié)點(diǎn)。

RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); builder.setNodeSelector(new NodeSelector() { @Overridepublic void select(Iterable<Node> nodes) {/** Prefer any node that belongs to rack_one. If none is around* we will go to another rack till it's time to try and revive* some of the nodes that belong to rack_one.*/boolean foundOne = false;for (Node node : nodes) {String rackId = node.getAttributes().get("rack_id").get(0);if ("rack_one".equals(rackId)) {foundOne = true;break;}}if (foundOne) {Iterator<Node> nodesIt = nodes.iterator();while (nodesIt.hasNext()) {Node node = nodesIt.next();String rackId = node.getAttributes().get("rack_id").get(0);if ("rack_one".equals(rackId) == false) {nodesIt.remove();}}}} });

設(shè)置分配感知節(jié)點(diǎn)選擇器,允許選擇本地rack中的節(jié)點(diǎn)(如果有),否則轉(zhuǎn)到任何rack中的任何其他節(jié)點(diǎn)。它充當(dāng)偏好而不是嚴(yán)格的要求,如果沒(méi)有任何本地節(jié)點(diǎn)可用,它將進(jìn)入另一個(gè)rack,而不是在這種情況下不返回任何節(jié)點(diǎn),這將使客戶端在首選rack中沒(méi)有任何節(jié)點(diǎn)可用時(shí)強(qiáng)制恢復(fù)本地節(jié)點(diǎn)。

不一致地選擇相同節(jié)點(diǎn)集的節(jié)點(diǎn)選擇器將使循環(huán)行為變得不可預(yù)測(cè)并且可能不公平,上面的偏好示例很好,因?yàn)樗梢越忉屢呀?jīng)影響輪詢調(diào)度可預(yù)測(cè)性的節(jié)點(diǎn)的可用性,節(jié)點(diǎn)選擇不應(yīng)該依賴于其他外部因素,否則輪詢調(diào)度將無(wú)法正常工作。

總結(jié)

以上是生活随笔為你收集整理的Elasticsearch Java Low Level REST Client(通用配置)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年人视频在线免费看 | 亚洲色婷婷久久精品av蜜桃 | 性三级视频| 国产8区| 亚洲 在线 | 亚洲精品在线播放视频 | 久久成人精品一区二区 | 欧美在线xxxx | 日韩精品2区 | 三级网站视频 | 免费a v视频 | 上海女子图鉴 | 蜜臀国产AV天堂久久无码蜜臀 | 97人妻天天摸天天爽天天 | 国模私拍大尺度裸体av | 在线视频综合网 | 亚洲成人av中文字幕 | 国产午夜精品一区二区理论影院 | 日韩成人免费在线 | 美女视频黄免费 | 色婷婷av一区二区三区麻豆综合 | 中文字幕乱码在线观看 | 小俊大肉大捧一进一出好爽 | 黄色av电影网站 | 亚洲国产精品久 | 亚洲30p| www.日韩欧美 | 欧美一级免费观看 | 国产叼嘿视频在线观看 | 男女啪啪软件 | 亚洲精品乱码久久久久久蜜桃不卡 | 美女色av| 狠狠爱夜夜爱 | 国产www性| 丝袜理论片在线观看 | 精品国产乱码久久久久久影片 | 97欧美视频| 91av官网 | 老司机午夜性大片 | 色偷偷免费费视频在线 | 91成人在线 | 特黄特色大片免费视频大全 | 亚洲天堂一级 | 又色又爽又高潮免费视频国产 | 国产成人精品a视频 | 麻豆爱爱| 能免费看av的网站 | 国产又色又爽无遮挡免费动态图 | 欧美色图12p | 日韩成人区 | 久久久久久av无码免费网站下载 | 色94色欧美sute亚洲线路二 | 中文字幕人妻熟女在线 | 8x国产一区二区三区精品推荐 | 日韩免费久久 | 中国丰满人妻videoshd | 九色丨蝌蚪丨成人 | 国产传媒精品 | 在线综合网 | 国产精品不卡一区二区三区 | 成人自拍视频在线 | 色噜噜狠狠成人中文 | 亚洲av成人精品一区二区三区在线播放 | 亚洲天堂2018av | 欧美激情自拍偷拍 | 国产又爽又黄的激情精品视频 | 日韩中文字幕免费 | 免费古装一级淫片潘金莲 | 天堂网视频 | 日韩天堂一区 | 伊人久久婷婷 | 伊人黄色网 | 午夜私人影院 | 碰在线视频 | 成年人在线观看 | 精品无码三级在线观看视频 | 久久人妻少妇嫩草av蜜桃 | 久久久久看片 | 秘密基地免费观看完整版中文 | 久久一级电影 | 依人综合 | 日本在线免费播放 | 黄色男女网站 | 荒野求生21天去码版网站 | 丁五月 | 青青青国内视频在线观看软件 | 在线视频日韩欧美 | 亚洲第一视频 | 夜夜成人| 亚洲涩视频 | 韩国明星乱淫(高h)小说 | av中文字幕免费 | 麻豆回家视频区一区二 | 青青艹在线观看 | 免费伊人网 | 国产精品日韩一区 | 极品蜜桃臀肥臀-x88av | 国产精品一区二区av白丝下载 | 三级黄色在线视频 |