1,首先创建连接搜索服务服务器对象
对于演示应用程序,选择 Transport Client,并保持 Elasticsearch 执行最低级别的处理:
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress
(InetAddress.getByName("127.0.0.1"), 9300));
如果连接到一个 Elasticsearch 集群,构建器可以接受多个地址。(在本例中只有一个 localhost 节点。)
TransportClient通过传输模式来连接到一个Elasticsearch的集群。它并不会加入到集群当中,而是会简单的得到一个或者更多的初始化的传输地址并且在每一个活动当中以轮询调度的方式来和它们通信。
2,创建索引(相当于关系型数据库中的数据库)
client.admin().indices().prepareCreate("blog").get();//创建索引操作
//client.admin().indices().prepareDelete("blog").get();// 删除索引
3,映射相关操作
// 构建映射的json描述文本
XContentBuilder builder = XContentFactory.jsonBuilder().startObject()
.startObject("article").startObject("properties")
.startObject("id").field("type", "integer")
.field("store","yes").endObject()
.startObject("title").field("type","string").field("store","yes").field("analyzer","ik").endObject()
.startObject("content").field("type","string").field("store","yes").field("analyzer","ik").endObject().endObject().endObject().endObject();
//相当于以下的格式
{
"article":{
"properties":{
"id":{
"type":"integer",
"store":"yes",
},
"title":{
"type":"string",
"store":"yes",
"analyzer":"ik"
}
"content":{
"type":"string",
"store":"yes",
"analyzer":"ik"
}
}
}
}
}
//将映射和索引绑定,获取映射对象
PutMappingRequest mapping =Requests.putMappingRequest("blog")
.type("article").source(builder);
//添加映射
client.admin().indices().putMapping(mapping).get();
4,文档的相关操作
创建文档操作
1、 在 XContentBuilder 中构建 json 数据
//构建json数据
XContentBuilder builder = XContentFactory
.jsonBuilder()
.startObject()
.field("id", 1)
.field("title", "ElasticSearch")
.field("content",
"全文搜索引擎,基于restful web接口。")
.endObject();
// 建立文档对象
client.prepareIndex("blog", "article", "2").setSource(builder).get();
2、 对一个已经存在对象,转换为 json
//Article是实体类
Article article = new Article();
article.setId(2);
article.setTitle("搜索工作其实很快乐");
article.setContent("我们希望我们的搜索解决。");
ObjectMapper objectMapper = new ObjectMapper();
// 建立文档
client.prepareIndex("blog2", "article", article.getId().toString())
.setSource(objectMapper.writeValueAsString(article)).get();
修改文档操作
client.prepareUpdate("blog2", "article", article.getId().toString())
.setDoc(objectMapper.writeValueAsString(article)).get();
删除文档操作
client.prepareDelete("blog2", "article", article.getId().toString()) .get();
5.关闭连接
client.close();