首先先安装并启动ElasticSearch,别忘了按装ik分词器。
如何查看ElasticSearch是否启动,Ik分词器是否安装:
ES安装启动教程:
IK分词器安装启动教程:
1.ElasticSearch的HTTP默认端口是9200,我们可以postman get请求查看
2.我们可以用Http请求ES接口来确认Ik分词器是否安装完成
3.用@Configuration创建ES客户端的bean。注意ES tcp监听端口是9300
引入依赖
<!--es-->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
配置ES客户端
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.network.InetAddresses;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
/**
* ElasticSearch配置类
* */
public class EsConfig {
@Value(value = "${spring.data.elasticsearch.cluster-name}")
private String clusterName;
@Bean
public TransportClient buildClient() {
Settings setting = Settings.builder()
.put("cluster.name", clusterName)//指定集群名称
.put("client.transport.sniff", true)//启动嗅探功能
.build();
TransportClient client = new PreBuiltTransportClient(setting);
TransportAddress transportAddress = new TransportAddress(InetAddresses.forString("127.0.0.1"), 9300);
//ESTCP监听端口是9300
client.addTransportAddresses(transportAddress);
return client;
}
}
创建ES 文档
ES的文档相当于关系型数据库中的表。ES中的mapping相当于数据库中表的字段,可以指定Mapping的类型,若类型为text,则分词器会对其进行分词,若类行为keyword则不会对其进行分词,此外还支持
POST http://127.0.0.1:9200/passbook/merchant/_mapping
{
"merchant": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
"detail": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
}