如何在弹性搜索中从多个索引中获取数据

时间:2019-09-29 12:48:39

标签: elasticsearch elasticsearch-java-api

我有一个三个索引,所有三个索引都有一个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);

1 个答案:

答案 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