- 写在开头
- 开箱即用的elasticsearch
- 用curl语句在es中创建第一个索引(映射)
- 用HighLevelClient创建第一个索引(映射)
大学毕业入职半年的菜鸡第一篇博客,多次在项目中简单使用过es,es的介绍和故事等随处可见,不再赘述,官方的地址贴在这里,废话不多说,直接进入正题。
官方文档:《Elasticsearch 权威指南》中文版
注意:官方文档基于es2,本文基于es7
es创始人Shay Banon的故事点这里
开箱即用的elasticsearches官方下载地址
kibana官方下载地址
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分词器安装
用curl语句在es中创建第一个索引(映射)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)字符串:
- text ⽤于全⽂索引,搜索时会自动使用分词器进⾏分词再匹配
- keyword 不分词,搜索时需要匹配完整的值
(2)数值型
- 整型: byte,short,integer,long
- 浮点型: float, half_float, scaled_float,double
(3)日期类型
- date
其它的类型可以参考这里,不再赘述:常用类型参考
用HighLevelClient创建第一个索引(映射)导入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);



