/**
* 1. 根据条件查询
* Execute the criteria query against elasticsearch and return result as {@link List}
*
* @param query 字段名称逻辑拼接字段的值,支持排序和分页
* @param clazz
* @param <T>
* @return
*/
<T> List<T> queryForList(CriteriaQuery query, Class<T> clazz);
/**
* 2. 根据字符串查询
* Execute the string query against elasticsearch and return result as {@link List}
*
* @param query
* @param clazz
* @param <T>
* @return
*/
<T> List<T> queryForList(StringQuery query, Class<T> clazz);
/**
* 3. 根据搜索查询
* Execute the search query against elasticsearch and return result as {@link List}
*
* @param query
* @param clazz
* @param <T>
* @return
*/
<T> List<T> queryForList(SearchQuery query, Class<T> clazz);
/**
* 4. 根据多搜索查询
* 一个接口默认方法,实现类可以调用
* Execute the multi search query against elasticsearch and return result as {@link List}
*
* @param queries
* @param clazz
* @param <T>
* @return
*/
default <T> List<List<T>> queryForList(List<SearchQuery> queries, Class<T> clazz) {
return queryForPage(queries, clazz).stream().map(Page::getContent).collect(Collectors.toList());
}
/**
* 5. 通过ids,批量查询
* Execute a multiGet against elasticsearch for the given ids
*
* @param searchQuery
* @param clazz
* @return
*/
<T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz);
/**
* 6. 通过ids和查询条件,批量查询
* Execute a multiGet against elasticsearch for the given ids with MultiGetResultMapper
*
* @param searchQuery
* @param clazz
* @param multiGetResultMapper
* @return
*/
<T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz, MultiGetResultMapper multiGetResultMapper);