依赖
< dependency> < groupId> org.elasticsearch .client</ groupId> < artifactId> elasticsearch -rest-high-level-client</ artifactId>
</ dependency>
配置文件
es : ip : 172.23.4.130port : 9200 user : elasticpassword : qwertyuiop
读取配置文件类
java">@Component
@ConfigurationProperties ( prefix = "es" )
@Data
public class ElasticsearchProperties { private String ip; private int port; private String user; private String password;
}
配置类
java">@Configuration
@RequiredArgsConstructor
public class ElasticsearchConfig { private final ElasticsearchProperties elasticsearch Properties; @Bean public RestHighLevelClient restHighLevelClient ( ) { CredentialsProvider credentialsProvider = new BasicCredentialsProvider ( ) ; credentialsProvider. setCredentials ( new AuthScope ( elasticsearch Properties. getIp ( ) , elasticsearch Properties. getPort ( ) ) , new UsernamePasswordCredentials ( elasticsearch Properties. getUser ( ) , elasticsearch Properties. getPassword ( ) ) ) ; RestClientBuilder builder = RestClient . builder ( new HttpHost ( elasticsearch Properties. getIp ( ) , elasticsearch Properties. getPort ( ) , "http" ) ) ; builder. setHttpClientConfigCallback ( httpClientBuilder -> { return httpClientBuilder. setDefaultCredentialsProvider ( credentialsProvider) ; } ) ; return new RestHighLevelClient ( builder) ; }
}
格式化工具
java">public class EsUtils { public static < T > List < T > toList ( SearchHit [ ] hits, Class < T > clazz) { List < T > retList = new ArrayList < > ( ) ; for ( SearchHit item : hits) { String json = item. getSourceAsString ( ) ; T obj = JSONUtil . toBean ( json, clazz) ; retList. add ( obj) ; } return retList; } }
Controller
java">private final IGoodsService iGoodsService; @GetMapping ( "/list" )
public R list ( ) { SearchHits hit = iGoodsService. listPage ( getPage ( ) ) ; List < Goods > list = EsUtils . toList ( hit. getHits ( ) , Goods . class ) ; return R . page ( "获取成功" , list, hit. getTotalHits ( ) . value) ; }
Service
java"> private final RestHighLevelClient client; private final String GOODS_INDEX = "goods" ;
@SneakyThrows
@Override
public SearchHits listPage ( PageData p) { int page= ( p. getPageNum ( ) - 1 ) * p. getPageSize ( ) ; SearchRequest request = new SearchRequest ( GOODS_INDEX ) ; request. source ( ) . query ( QueryBuilders . matchAllQuery ( ) ) ; request. source ( ) . from ( page) . size ( p. getPageSize ( ) ) ; SearchResponse response= client. search ( request, RequestOptions . DEFAULT ) ; SearchHits hits = response. getHits ( ) ; return hits;
}