大学毕业入职半年的菜鸡第一篇博客,多次在项目中简单使用过es,es的介绍和故事等随处可见,不再赘述,官方的地址贴在这里,废话不多说,直接进入正题。
注意:官方文档基于es2,本文基于es7
windows下为例(环境变量中请配置好JAVA_HOME):
下载解压后双击/bin/elasticsearch.bat即可启动es,访问地址:localhost:9200,出现以下信息为访问成功!

下载解压后双击/bin/kibana.bat即可启动kibana,访问地址:localhost:5601

注:如果需要本地kibana连接其它服务器的es,可修改/bin/config/kibana.yml的elasticsearch.hosts: [“服务器地址:9200”]
如需安装ik中文分词器可参考ik分词器安装
PUT /firstmapping
{
"mappings": {
"properties": {
"title":{
"type":"keyword"
},
"content":{
"type": "text"
},
"score":{
"type": "double"
}
}
}
}
其中mapping定义该语句为一条映射语句,properties下填写索引的字段名(title,content,score),type为字段的类型(从es5开始不再支持string类型,将string类型拆分为text和keyword,其中keyword类型字段不可进行分词搜索)
es的常用类型如下:
(1)字符串:
(2)数值型
(3)日期类型
其它的类型可以参考这里,不再赘述:常用类型参考
导入es7的依赖:
7.13.0
org.elasticsearch.client
elasticsearch-rest-high-level-client
7.13.0
org.elasticsearch.client
elasticsearch-rest-client
7.13.0
org.elasticsearch
elasticsearch
7.13.0
创建client配置类:
@Configuration
public class Client {
@Value("${es.url}") //可在配置文件中添加添加多个es地址,配置es集群
private String esUrl;
@Bean
RestHighLevelClient configRestHighLevelClient() throws Exception{
String[] esUrls = esUrl.split(",");
List httpHosts = new ArrayList<>();
for (String url : esUrls) {
String[] esPort = url.split(":");
httpHosts.add(new HttpHost(esPort[0],Integer.parseInt(esPort[1]),"http"));
}
return new RestHighLevelClient(
RestClient.builder(httpHosts.toArray(new HttpHost[0]))
);
}
}
创建映射的主要代码:
XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
builder.startObject("mappings");
{
builder.startObject("properties");
{
builder.startObject("title");
{
builder.field("type", "keyword");
}
builder.endObject();
builder.startObject("content");
{
builder.field("type", "text");
}
builder.endObject();
builder.startObject("score");
{
builder.field("type", "double");
}
builder.endObject();
}
builder.endObject();
}
builder.endObject();
}
builder.endObject();
CreateIndexRequest index = new CreateIndexRequest("secondmapping");
index.source(builder);
client.indices().create(index, RequestOptions.DEFAULT);