1.множественный запрос matchPhrasePrefixQuery, как показано ниже
Код: Выделить всё
BoolQueryBuilder searchTheseFields = QueryBuilders.boolQuery();
for (String searchFields : searchTheseFieldsArray) {
searchTheseFields .should(QueryBuilders.matchPhrasePrefixQuery(searchFields, **SearchText**));
}
Код: Выделить всё
BoolQueryBuilder filterFields = QueryBuilders.boolQuery();
for (Map.Entry entry : filterTheseFields.entrySet()) {
filterFields.must(QueryBuilders.termQuery(entry.getKey(), entry.getValue()));
}
Код: Выделить всё
BoolQueryBuilder rangeFilter1 = QueryBuilders.boolQuery();
BoolQueryBuilder rangeFilter2 = QueryBuilders.boolQuery();
rangeFilter1.should(QueryBuilders.rangeQuery(key).gte("gteVal").lte("lteVal"))
.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(key)));
Код: Выделить всё
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(searchTheseFields)
.must(filterFields)
.filter(rangeFilter1);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.from(data.getFrom());
searchSourceBuilder.size(data.getSize());
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(passing indices here);
searchRequest.source(searchSourceBuilder);
SearchResponse response = client.search(searchRequest);
BoolQueryBuilder отсутствует, который использовался ранее для создания запросов другого типа и агрегирования. все из них.
Как упомянул @Murat, SearchSourceBuilder тоже нет
Итак, может ли кто-нибудь помочь мне имитировать приведенный выше код, используя новый Java API Клиент Elasticsearch новой версии 8 или выше, например, как мы можем создать несколько запросов разных типов, добавить их все в один запрос и вызвать его с помощью клиента.
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/784 ... -api-clien