我有一个三个索引,所有三个索引都有一个diff结构的document(nested),我试图加入该索引,但是在ES中没有joins.So,如何通过java从多个索引中获取数据高级API?
感谢您的帮助,
SearchRequest searchRequest = new SearchRequest("index_1","index_2","index_3");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy"));
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
答案 0 :(得分:0)
您可以在一个搜索操作中查询多个Elasticsearch索引。可以使用通配符模式指定索引,也可以使用逗号作为分隔符列出多个索引。
但是使用客户端API(Java高级API),您必须将SearchRequest
中的索引名称转换为字符串数组。 Java varargs
需要一个数组。 不确定,但如下所示。
String[] indexArray = new String[]{"index_1","index_2","imdex_3"}
SearchRequest searchRequest = new SearchRequest(indexArray);
如果尝试使用Multisearch API无法解决问题,请参见:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-multi-search.html#java-rest-high-multi-search