ElasticSearch集群及基础应用
首先这里用的有关ElasticSearch依赖有:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.5.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.5.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.5.1</version>
<scope>compile</scope>
</dependency>
编写一个util
public class ElasticSearchUtil {
public static RestHighLevelClient restHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
//127.0.0.1与9200是本地,若在本地中正常调用一个即可,若调用集群则new 多个HttpHost 如下所示:
new HttpHost("127.0.0.1", 9200, "http"),
new HttpHost("127.0.0.1", 9200, "http"),
new HttpHost("127.0.0.1", 9200, "http"))
);
//返回
return client;
}
}
//调用client连接
RestHighLevelClient client = ElasticSearchUtil.restHighLevelClient();
SearchRequest searchRequest = new SearchRequest("索引");
//构建索引条件
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//sourceBuilder中有sort、size、searchAfter,可进行排序分页
超时时间30s
sourceBuilder.timeout(new TimeValue(30, TimeUnit.SECONDS));
查找或排序后的封装到searchRequest
searchRequest.source(sourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
for (SearchHit hit : response.getHits().getHits()) {
//将获取的值转换成map的形式
Map<String, Object> map = hit.getSourceAsMap();
XXX xx = JSON.parseObject(JSON.toJSONString(map), XXX.class);
list.add(xx);
}