Поиск по нескольким индексам эластичного поиска с использованием Java API - PullRequest
0 голосов
/ 11 июня 2018

Я умею искать в эластичном поиске с одним индексом, но я хочу искать по нескольким индексам и источникам.

Пожалуйста, найдите ниже код, который используется для поиска по одному 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();
}

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы можете Конструктор запроса с индексами массива.

String indices[]-{INDEX, INDEX2}

this.searchRequest = new SearchRequest(indices);
0 голосов
/ 11 июня 2018

Просто используйте конструктор varargs SearchRequest для передачи нескольких имен индексов.

Создает новый поисковый запрос по индексам.Отсутствие указанных здесь индексов означает, что поиск будет выполняться по всем индексам.

SearchRequest searchRequest = new SearchRequest(INDEX, INDEX2)
...