一、导入坐标
使用ElasticSearch6.8.1
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.8.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.8.1</version>
</dependency>
二、配置Bean
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.AbstractFactoryBean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ElasticSearchConfiguration extends AbstractFactoryBean {
private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchConfiguration.class);
@Value("${elasticsearch.host}")
private String host;
private RestHighLevelClient restHighLevelClient;
@Override
public void destroy() throws Exception {
// 关闭Client
if (restHighLevelClient != null) {
restHighLevelClient.close();
}
}
@Override
public Class<RestHighLevelClient> getObjectType() {
return RestHighLevelClient.class;
}
@Override
public boolean isSingleton() {
return false;
}
@Override
protected Object createInstance() throws Exception {
try {
// 如果有多个节点,构建多个HttpHost
restHighLevelClient = new RestHighLevelClient(
RestClient.builder(
new HttpHost(host, 9200, "http")));
} catch (Exception e) {
LOG.error(e.getMessage());
}
return restHighLevelClient;
}
}
三、配置文件
elasticsearch:
host: 192.168.135.100
四、测试ES
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainApplication.class)
public class TestEs {
@Autowired
private RestHighLevelClient restHighLevelClient;
@Test
public void test01() throws IOException {
SearchRequest searchRequest=new SearchRequest("sku");
searchRequest.types("doc");
SearchSourceBuilder searchSourceBuilder=new SearchSourceBuilder();
MatchQueryBuilder matchAllQueryBuilder = QueryBuilders.matchQuery("name","手机");
searchSourceBuilder.query(matchAllQueryBuilder);
searchRequest.source(searchSourceBuilder);
//查询
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHits searchHits = searchResponse.getHits();
System.out.println("记录数:"+searchHits.getTotalHits());
SearchHit[] hits = searchHits.getHits();
for (SearchHit hit:hits){
// hit.getSourceAsMap();
System.out.println(hit.getSourceAsString());
}
}
}