2017-06-22 23 views
0

我的索引是:https://URL/bpa_stag_v3_2016*,bpa_stag_v3_2017/orders_suppliers_stats_ag/_search 我使用api java進行Elastic搜索,但它沒有工作。如何在ES API中創建多重索引Java

String indexForTwoYear = ConfiguratorDao.CURRENT_ENV.getAliasPrefix() + String.valueOf(previousYear) + "*," 
        + ConfiguratorDao.CURRENT_ENV.getAliasPrefix() + String.valueOf(currentYear) + "*"; 



      SearchRequestBuilder requestBuilder = client.prepareSearch(indexForTwoYear) 
        .setTypes(IndexTypeEnum.SUPPLIERS_AGGREGATION.getValue()).setQuery(queryBuilder).setSize(1); 

回答

1

作爲每AbstractClient類Elasticsearch(其由NodeClientTransportClient延長)的文檔,可以通過在prepareSearch方法(javadoc的here)可變數目的指數作爲VAR-args來:

public SearchRequestBuilder prepareSearch(String... indices) 

使用查詢搜索一個或多個索引和一個或多個類型。

所以,你的情況,這將是:

client.prepareSearch("pa_stag_v3_2016*","bpa_stag_v3_2017") 
+0

你能否請你改正索引bpa_stag_v3_2016 *的答案,因爲我的索引是動態的,所以我需要2016年和2017年的所有索引 – YasBES

+0

@YasBES完成,現在試試? –

1

爲了在使用Java API多個索引搜索,你應該只通過索引名稱爲多個參數(而不是作爲一個逗號分隔的字符串...)

像這樣:client.prepareSearch("bpa_stag_v3_2016*", "bpa_stag_v3_2017")

請看這裏的例子https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search.html

+0

可以請你糾正你的答案指數bpa_stag_v3_2016 *有*的,因爲我的索引的是動態的,所以我需要所有的指數在2016年和2017年 – YasBES