2016-05-13 73 views
0

我是Java編程新手,需要一些幫助。 我運行下面的代碼,並獲得相應的響應,即Java中的ElasticSearch Multiget問題

{"name1":"Name2","date1":"2016-05-13","message1":"Message2"} 
{"name1":"Name0","date1":"2016-05-13","message1":"Message0"} 


MultiGetResponse multiGetItemResponses = client.prepareMultiGet() 
     .add("loc", "message", "AVSoemK55hnvwxeDfgCc", "AVSoemK55hnvwxeDfgCa").get(); 


for(MultiGetItemResponse itemResponse: multiGetItemResponses){ 
GetResponse response2 = itemResponse.getResponse(); 
     if(response2.isExists()){ 
     String json2 = response2.getSourceAsString(); 
     System.out.println(json2); 
     } 
    } 

然而,當我試圖參數化搜索文本,它不返回任何值。任何人都可以請指導什麼可能會出錯?我已檢查該變量ABC正在返回正確的值,即「AVSoemK55hnvwxeDfgCc」,「AVSoemK55hnvwxeDfgCa」

public static boolean getData(String ids){ 

    String idAry[] = ids.split(","); 

    ArrayList<String> idStr = new ArrayList<String>(); 
    for (String id:idAry){ 
     idStr.add('"'+id+'"'); 

    } 

    String abc = idStr.toString().replace("[", "").replace("]", ""); 
    System.out.println(abc); 
    MultiGetResponse multiGetItemResponses = client.prepareMultiGet() 
      .add("loc", "message", abc).get(); 
// MultiGetResponse multiGetItemResponses = client.prepareMultiGet() 
//   .add("loc", "message", "AVSoemK55hnvwxeDfgCc", "AVSoemK55hnvwxeDfgCa").get(); 
// 

    for(MultiGetItemResponse itemResponse: multiGetItemResponses){ 
    GetResponse response2 = itemResponse.getResponse(); 
      if(response2.isExists()){ 
      String json2 = response2.getSourceAsString(); 
      System.out.println(json2); 
      } 
     } 
    return true; 

    } 

回答

0

你不需要abc變量,即你不需要到您的列表轉換爲字符串。您只需構建像這樣的查詢,將idList傳遞給您的add()調用,因爲此調用將採用索引,類型和Iterable<String>,因此idList已適合該作業。

public static boolean getData(String ids){ 
    String idAry[] = ids.split(","); 
    List<String> idList = Arrays.asList(idAry); 

    MultiGetResponse multiGetItemResponses = client.prepareMultiGet() 
     .add("loc", "message", idList).get(); 
    ... 
+0

很酷,它的工作。 –

+0

太棒了,很高興它解決了! – Val

+0

如何使每個查詢具有多個'where'條件的MultiGerResponse查詢?謝謝! – Vimal