我的索引是:https://URL/bpa_stag_v3_2016*,bpa_stag_v3_2017/orders_suppliers_stats_ag/_search
我正在使用 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);
根据 Elasticsearch 类AbstractClient
文档(由 NodeClient
和 TransportClient
扩展(,您可以在prepareSearch
方法(此处为 javadoc(中将可变数量的索引作为 var-args 传递:
public SearchRequestBuilder prepareSearch(String... indices)
使用查询搜索一个或多个索引以及一个或多个类型。
因此,在您的情况下,它将是:
client.prepareSearch("pa_stag_v3_2016*","bpa_stag_v3_2017")
要使用 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。