1:es的9300端口和9200端口的区别
9200作为http协议,主要用于外部通讯
9300作为tcp协议,jar之间通过tcp协议,es集群是通过9300通讯
2:创建http连接
pom
<!-- elasticsearch的客户端 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.5.4</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.5.4</version>
</dependency>
代码
// 创建HttpHost对象
HttpHost httpHost = new HttpHost("127.0.0.1",9200);
// 创建RestClientBuilder
RestClientBuilder builder = RestClient.builder(httpHost);
// 创建RestHighLevelClien对象
RestHighLevelClient client = new RestHighLevelClient(builder);
3:创建index
//1、 准备关于索引的settings
Settings.Builder settings = Settings.builder()
.put("number_of_shards", 3)
.put("number_of_replicas", 1);
//2、 准备关于索引的结构mappings
XContentBuilder mappings = JsonXContent.contentBuilder()
.startObject()
.startObject("properties")
.startObject("name")
.field("type","text")
.endObject()
.startObject("age")
.field("type","integer")
.endObject()
.startObject("birthday")
.field("type","date")
.field("format","yyyy-MM-dd")
.endObject()
.endObject()
.endObject();
//2 将settings 和 mappings封装成一个request对象
CreateIndexRequest request = new CreateIndexRequest("biaoming")
.settings(settings)
.mapping("leixing",mappings);
//3 通过client对象去链接es并执行创建索引
RestHighLevelClient client = getClient();
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
//测试
System.out.println("response"+response.toString());
4:创建实体类
@Data
/**无参构造*/
@NoArgsConstructor
/**有参构造*/
@AllArgsConstructor
public class Persion {
@JsonIgnore
private Integer id;
private String name;
private Integer age;
private Date birthDay;
}
5:添加一条数据
//准备json数据
Persion persion = new Persion(555,"张三555",5555,new Date());
String json = JSON.toJSONString(persion);
/**
* 创建request对象
* 参数说明:
* 1、索引名,类似MySql中数据库
* 2、类型名,类似要操作数据库中那一张表
* 3、手动指定文档id,不指定id则es自动赋值
*/
//创建request对象
// 索引名 类型名
IndexRequest request = new IndexRequest("biaoming","leixing","11");
request.source(json, XContentType.JSON);
//获取连接
RestHighLevelClient client = getClient();
IndexResponse index = client.index(request, RequestOptions.DEFAULT);
6:批量添加
//准备json数据
Persion persion = new Persion(555,"张三555",5555,new Date());
String json = JSON.toJSONString(persion);
/**
* 创建request对象
* 参数说明:
* 1、索引名,类似MySql中数据库
* 2、类型名,类似要操作数据库中那一张表
* 3、手动指定文档id
*/
//创建request对象
// 索引名 类型名
IndexRequest request = new IndexRequest("biaoming","leixing","11");
request.source(json, XContentType.JSON);
IndexRequest request1 = new IndexRequest("biaoming","leixing","12");
request1.source(json, XContentType.JSON);
IndexRequest request2 = new IndexRequest("biaoming","leixing","13");
request2.source(json, XContentType.JSON);
RestHighLevelClient client = getClient();
//批量插入
BulkRequest requestAll = new BulkRequest();
requestAll.add(request);
requestAll.add(request1);
requestAll.add(request2);
BulkResponse bulk = client.bulk(requestAll);
7:检查索引是否存在
//1 准备request对象
GetIndexRequest request = new GetIndexRequest();
request.indices("biaoming");
// 2 通过client去检查
RestHighLevelClient client =getClient();
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);