【问题标题】:Searching multiple elasticsearch's indexes using Java API使用 Java API 搜索多个弹性搜索的索引
【发布时间】:2018-06-11 10:06:56
【问题描述】:

我能够使用一个索引搜索 elasticsearch,但我想搜索多个索引和来源。

请找到下面用于搜索一个index和一个source的代码

private final String INDEX = "my_index";
private final String TYPE = "doc";
private final String SOURCE = "doct_name";

GetRequest getRequest = new GetRequest(INDEX, TYPE, SOURCE);
getRequest.routing(name);

GetResponse getResponse = null;

try {
    getResponse = restHighLevelClient.get(getRequest);
} catch (java.io.IOException e){
    e.getLocalizedMessage();
}
SearchRequest searchRequest = new SearchRequest(INDEX); 
searchRequest.types(TYPE);

String star="*";
String query=star.concat(name).concat("*");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
QueryStringQueryBuilder qsQueryBuilder = new QueryStringQueryBuilder(query); 
qsQueryBuilder.defaultField("*");
searchSourceBuilder.query(qsQueryBuilder); 
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = null;
try {
     searchResponse = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
    e.getLocalizedMessage();
}

【问题讨论】:

  • 你能解决这个问题吗?帮我解决同样的问题

标签: java elasticsearch elastic-stack


【解决方案1】:

只需使用SearchRequest 的可变参数构造函数来传递多个索引名称。

针对索引构造一个新的搜索请求。没有索引 此处提供意味着搜索将针对所有索引运行。

SearchRequest searchRequest = new SearchRequest(INDEX, INDEX2)

【讨论】:

  • 收到以下错误,当我在 SearchRequest java.lang.RuntimeException: Illegal character in path at index 10: /my_index, documents_test2/doc/_search 中传递 2 个索引时
【解决方案2】:

你可以Searchrequest带有数组索引的构造函数。

String indices[]-{INDEX, INDEX2}

this.searchRequest = new SearchRequest(indices);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2015-09-05
    • 2023-01-31
    相关资源
    最近更新 更多