1. 程式人生 > >elasticsearch版本不同,批量查詢也不相同

elasticsearch版本不同,批量查詢也不相同

網上搜到批量查詢可以通過TransportClient實現,但官方推薦使用RestHighLevelClient實現

注意:

We plan on deprecating the TransportClient in Elasticsearch 7.0 and removing it completely in 8.0. Instead, you should be using the Java High Level REST Client, which executes HTTP requests rather than serialized Java requests.

查詢最新的RestHighLevelClient api文件

MultiSearchRequest request = new MultiSearchRequest();    
SearchRequest firstSearchRequest = new SearchRequest();   
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("user", "kimchy"));
firstSearchRequest.source(searchSourceBuilder);
request.add(firstSearchRequest);                          
SearchRequest secondSearchRequest 
= new SearchRequest(); searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchQuery("user", "luca")); secondSearchRequest.source(searchSourceBuilder); request.add(secondSearchRequest); MultiSearchResponse response = client.msearch(request, RequestOptions.DEFAULT);

但嘗試發現,沒有msearch這個方法,發現版本為6.1的 不支援這個方法

SearchRequestBuilder srb1 = client
    .prepareSearch().setQuery(QueryBuilders.queryStringQuery("elasticsearch")).setSize(1);
SearchRequestBuilder srb2 = client
    .prepareSearch().setQuery(QueryBuilders.matchQuery("name", "kimchy")).setSize(1);

MultiSearchResponse sr = client.prepareMultiSearch()
        .add(srb1)
        .add(srb2)
        .get();

// You will get all individual responses from MultiSearchResponse#getResponses()
long nbHits = 0;
for (MultiSearchResponse.Item item : sr.getResponses()) {
    SearchResponse response = item.getResponse();
    nbHits += response.getHits().getTotalHits();
}

只能使用TransportClient來實現

import java.io.IOException;
import java.net.InetAddress;

import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.MultiSearchResponse.Item;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

public class App4 {
    @SuppressWarnings("resource")
    public static void main(String[] args) throws IOException {
             
            TransportClient client=new PreBuiltTransportClient(Settings.EMPTY)
                    .addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"), 9300)); //1st ES Node host and port
            SearchRequest req=new SearchRequest("person");
             SearchSourceBuilder builder=new SearchSourceBuilder();
             builder.size(10);
             req.source(builder);
             
             SearchRequest req1=new SearchRequest("posts");
             SearchSourceBuilder builder1=new SearchSourceBuilder();
             builder.size(10);
             req.source(builder1);
            MultiSearchResponse bulkResponse=client.prepareMultiSearch()
                    .add(req)
                    .add(req1)
                    .get();
            
            for (Item item : bulkResponse.getResponses()) {
                if (item.isFailure()) { 
                    System.out.println(item.getFailureMessage());
                }else {
                    System.out.println("-----------------------------------------------------------------------");
                    System.out.println(item.getResponse().toString());
                }
            }
         
        /**** Done ****/
        System.out.println("Done");

    }
    
}

相關推薦

elasticsearch版本不同批量查詢相同

網上搜到批量查詢可以通過TransportClient實現,但官方推薦使用RestHighLevelClient實現 注意: We plan on deprecating the TransportClient in Elasticsearch 7.0 and removing it complete

在Windows Server 2008 R2 Server中連接其他服務器的數據庫遇到“未啟用當前數據庫的 SQL Server Service Broker因此查詢通知受支持。如果希望使用通知請為此數據庫啟用 Service Broker ”

lba pos 數據庫名 nbsp bsp enable 輸入 images logs 項目代碼和數據庫部署在不同的Windows Server 2008 R2 Server中,錯誤日誌顯示如下: "未啟用當前數據庫的 SQL Server Service Broker,因

人工智能風口下PHP已過時Java地位保了!

數據分析 課程 就業市場 jsp 工程師 項目 兼容 世界 階段 PHP 從誕生到現在已經有 20 多年歷史,從 Web 時代興起到移動互聯網退潮,互聯網領域各種編程語言和技術層出不窮, Node.js 、 GO 、 Python 不斷地在挑戰 PHP 的地位。這些技術的推

Location許可權因系統版本不同6.0許可權對話方塊沒有7.08.0正常開發時要注意

1、一個獲取Location許可權引發的刺激,就這三個Location許可權 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission an

解決在Windows下elasticsearch啟動失敗報${ES_TMPDIR}找到的問題

在Windows下elasticsearch啟動失敗,報${ES_TMPDIR}找不到問題。 【日誌】 [2018-03-25T16:11:34,144][WARN ][o.e.b.Natives         &

java redis通過key模糊刪除批量刪除批量查詢相關資料

  @RunWith(SpringRunner.class) @SpringBootTest public class RedisTest { @Autowired private StringRedisTemplate stringRedisTemplate; @Aut

一起來學大資料|Spring的事務管理一分錢能少

  之前我們講過spring是一站式框架,我們已經學習了spring框架簡單的資料操作。今天我們一起來看看spring針對dao層提供的解決技術jdbcTemplate。我們直接以銀行轉賬為例,完成我們資料庫的連線和事務管理。 JdbcTemplate 1、準備工作

限制input框只能輸入數字加減號可以輸入

例子:html程式碼 <input type="number" id="assetId" required name="assetId" value="${entity.assetId}" onblur="javascript:setDispatchTitle();"

模仿事物一個功能執行成功時另一個能執行

        double d = 0;         double f = 1;         double g = d / f;

sourceInsight打解除安裝重灌能用重啟能用的完美解決方法

sourceInsight莫名其妙就打不開,解除安裝重灌也不能用,重啟也不能用的完美解決方法: 1:解除安裝當前的sorce insight 2::刪除如下注冊表:         HKEY_LOCAL_MACHINE\SOFTWARE\Source Dynamics\

程式設計師找工作心酸一幕:我年紀不大要的您再考慮下吧

一名網友曝光了令人心酸的一幕:坐地鐵,聽一個看著像程式設計師的哥們在打電話說,我歲數也不大,要的也不多,您再考慮下吧?是市場不好,還是年紀不好?     隨著網際網路熱潮的興起,一方面程式設計師成了各大企業爭搶的香餑餑,一方面大齡程式設計師又成了令人嫌棄的物件,

我的if else程式碼純淨無暇一個字能簡化

機器之心報道,參與:劉曉坤、王淑婷、李澤南。 「我曾接手過一個程式碼,裡面是幾十個 if else 模組……」對於程式設計師們來說,遇到這樣的事情應該是苦不堪言的——很多人認為這種寫法非常難看、分支眾多、容易出 bug。最近,網友們在容器管理平臺 Kubernetes 的 GitHub 上發現了這樣

其實前端一點簡單

大多人都認為前端開發是一個「相對於其他技術來說更簡單的技術」,在他們心中的前端工程師是這樣工作的: 把 Photoshop 檔案、圖片或者線框放進一個網頁; 偶爾設計 Photoshop 檔案、圖片或者線框; 用 JS 程式設計,為網頁製作動畫、過渡效果;

【Git】先commit後pull由於版本衝突提交內容看到的解決方法

已commit,pull版本衝突,push不成功,找到自己commit修改過的。 根據提交記錄,還原版本     git reflog   檢視提交記錄(找到commit版本號)     git reset --hard HEAD版本號   還原到commit版本

用Python給網站賬號建立一個強密碼頂尖黑客一定能破解!

歡迎來到使用python編寫程式碼的另一章,在本章中,我們將探索另一個網站,它將幫助我們通過解決各種與python相關的問題來提高我們的python技能。我還不知道這個網站到底是關於什麼的,在我剛剛加入這個網站之後。這個網站允許程式設計師用python建立遊戲嗎?或者它只是一個普通的網站,就像我們以

“媽媽想學了”你的回答改變孩子一生(悵然若失說了一句話:“為什麼當初沒有人逼我?”。我願意學你就讓我學啦!那時候我還小我還懂事難道你也不懂事嗎。要做成一件事就必須有延遲滿足的能力)

“媽媽,我不想學了”,你的回答改變孩子一生(組圖)新聞來源: 槽值 前兩天,送孩子去書法班的時候,在小區門口看到一位媽媽,她正拽著孩子往車裡進,孩子哭著掙扎:“我不想學舞蹈了,我不去,太累了……” 媽媽怒吼著:“你今天去也得去,不去也得給我去!” 最終,孩子還是拗不過媽媽,上了車,去學舞蹈。 我不禁想

資料庫中如何在同一張表中複製已經存在的記錄只有主鍵不同其餘欄位均相同

FAS_BILL_INFO表的主鍵為BILL_CODE,新生成一個new_bill_code,把old_bill_code對應的全部複製到新生成new_bill_code的記錄中; declare     old_bill_code varchar2(44); --舊借據號&

多個版本jdk修改環境變數生效

http://www.blogjava.net/brock/archive/2015/01/06/422073.aspx 多個jdk版本之間的切換不生效,操作: 在安裝JDK1.6時(本機先安裝jdk1.6再安裝的jdk1.5),自動將java.exe、javaw.ex

百度地圖api版本不同幾處不同

使用百度地圖,首先要了解兩個問題(我當時做的時候,遇到了,不知道現在改過了沒有) 1.由於版本的不同 1.2之前的引用 <script type="text/javascript"  src="http://api.map.baidu.com/api?key=46ce

一個電腦上同時安裝多個版本JDK設定環境變數生效的解決方法

window下在同一臺機器上安裝多個版本jdk,修改環境變數不生效問題 現象:某臺Windows機器,先安裝了JDK1.7,然後配置了JAVA_HOME等環