Elasticsearch5.4 Java API操作
2017-09-13 19:38
567 查看
public class ClientFactory {
@SuppressWarnings({ "resource", "unchecked" })
public static Client transportClient() {
//创建client
TransportClient transportClient = null;
try {
//设置集群名称(配置信息)
Settings settings = Settings.builder()
.put("cluster.name", "elasticsearch")
.build();
//创建client(添加连接地址)
transportClient = new PreBuiltTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.9.150"), 9300));
} catch (Exception e) {
e.printStackTrace();
}
return transportClient;
}
}
===============================================================================================================
public class ElasticsearchCURD {
private Client client;
/**
* 创建一个实例。
*
* @param client
*/
public ElasticsearchCURD(Client client) {
this.client = client;
}
/***************** index ******************************/
/**
* 创建一个索引
*
* @param indexName
* 索引名
*/
public void createIndex(String indexName) {
try {
CreateIndexResponse indexResponse = this.client.admin().indices().prepareCreate(indexName).get();
// 生产环境下,一律换成 logger.info()
System.out.println(indexResponse.isAcknowledged()); // true表示创建成功
} catch (ElasticsearchException e) {
e.printStackTrace();
}
}
/**
* 给索引增加mapping。
*
* @param index
* 索引名
* @param type
* mapping所对应的type
*/
public void addMapping(String index, String type) {
try {
// 使用XContentBuilder创建Mapping
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("properties").startObject()
.field("name").startObject().field("index", "not_analyzed").field("type", "string").endObject()
.field("age").startObject().field("index", "not_analyzed").field("type", "integer").endObject()
.endObject().endObject();
System.out.println(builder.string());
PutMappingRequest mappingRequest = Requests.putMappingRequest(index).source(builder).type(type);
this.client.admin().indices().putMapping(mappingRequest).actionGet();
} catch (ElasticsearchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除索引
*
* @param index
* 要删除的索引名
*/
public void deleteIndex(String index) {
DeleteIndexResponse deleteIndexResponse = this.client.admin().indices().prepareDelete(index).get();
System.out.println(deleteIndexResponse.isAcknowledged()); // true表示成功
}
/******************** doc *************************************/
/**
* 创建一个文档
*
* @param index
* index
* @param type
* type
*/
public void createDoc(String index, String type, String id) {
try {
// 使用XContentBuilder创建一个doc source
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("name", "zhangsan")
.field("age", 12).endObject();
IndexResponse indexResponse = this.client.prepareIndex().setIndex(index).setType(type).setId(id) // 如果没有设置id,则ES会自动生成一个id
.setSource(builder.string()).get();
// System.out.println(indexResponse.isCreated());
} catch (ElasticsearchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 更新文档
*
* @param index
* @param type
* @param id
*/
public void updateDoc(String index, String type, String id) {
try {
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("name", "lisi").field("age", 12)
.endObject();
UpdateResponse updateResponse = this.client.prepareUpdate().setIndex(index).setType(type).setId(id)
.setDoc(builder.string()).get();
// System.out.println(updateResponse.isCreated()); // true表示成功
} catch (ElasticsearchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除一条数据
*
* @param index
* @param type
* @param id
*/
public void deleteDoc(String index, String type, String id) {
DeleteResponse deleteResponse = this.client.prepareDelete().setIndex(index).setType(type).setId(id).get();
// System.out.println(deleteResponse.isFound()); // true表示成功
}
/**
* 根据ID查询一条数据记录。
*
* @param id
* 要查询数据的ID。
* @return 返回查询出来的记录对象的json字符串。
*/
public String get(String index, String type, String id) {
GetResponse getResponse = this.client.prepareGet() // 准备进行get操作,此时还有真正地执行get操作。(与直接get的区别)
.setIndex(index) // 要查询的
.setType(type).setId(id).get();
return getResponse.getSourceAsString();
}
/**
* 使用min聚合查询某个字段上最小的值。
*
* @param index
* @param type
*/
public void min(String index, String type) {
SearchResponse response = this.client.prepareSearch(index)
.addAggregation(AggregationBuilders.min("min").field("age")).get();
InternalMin min = response.getAggregations().get("min");
System.out.println(min.getValue());
}
}
===============================================================================================================
public class ESTests {
String indexName = "index2";
String typeName = "string";
String idName = "1"; // 默认ID为1,可根据需要在各自方法内通过局部变量进行修改
/**
* 测试连接Elasticsearch
*/
@Test
public void testConn() {
ClientFactory clientFactory = new ClientFactory();
try {
// 搜索数据
GetResponse response = clientFactory.transportClient().prepareGet("index", "fulltext", "1").execute()
.actionGet();
// 输出结果
System.out.println(response.getSourceAsString());
// 关闭client
// clientFactory.transportClient().close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 增加(创建索引)
*/
@Test
public void testCreateIndex() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.createIndex(indexName);
}
/**
* 给索引增加mapping
*/
@Test
public void testAddMapping() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.addMapping(indexName, typeName);
}
/**
* 创建一个文档
*/
@Test
public void testCreateDoc() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
String idName = "2";
elasticsearchCURD.createDoc(indexName, typeName, idName);
}
/**
* 更新文档
*/
@Test
public void testUpdateDoc() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.updateDoc(indexName, typeName, idName);
}
/**
* 删除一条数据
*/
@Test
public void testDeleteDoc() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.deleteDoc(indexName, typeName, idName);
}
/**
* 根据ID查询一条数据记录(无返回--todo)
*/
@Test
public void testGetById() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
String idName = "2";
elasticsearchCURD.get(indexName, typeName, idName);
}
/**
* 使用min聚合查询某个字段上最小的值
*/
@Test
public void testMin() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.min(indexName, typeName);
}
}
@SuppressWarnings({ "resource", "unchecked" })
public static Client transportClient() {
//创建client
TransportClient transportClient = null;
try {
//设置集群名称(配置信息)
Settings settings = Settings.builder()
.put("cluster.name", "elasticsearch")
.build();
//创建client(添加连接地址)
transportClient = new PreBuiltTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.9.150"), 9300));
} catch (Exception e) {
e.printStackTrace();
}
return transportClient;
}
}
===============================================================================================================
public class ElasticsearchCURD {
private Client client;
/**
* 创建一个实例。
*
* @param client
*/
public ElasticsearchCURD(Client client) {
this.client = client;
}
/***************** index ******************************/
/**
* 创建一个索引
*
* @param indexName
* 索引名
*/
public void createIndex(String indexName) {
try {
CreateIndexResponse indexResponse = this.client.admin().indices().prepareCreate(indexName).get();
// 生产环境下,一律换成 logger.info()
System.out.println(indexResponse.isAcknowledged()); // true表示创建成功
} catch (ElasticsearchException e) {
e.printStackTrace();
}
}
/**
* 给索引增加mapping。
*
* @param index
* 索引名
* @param type
* mapping所对应的type
*/
public void addMapping(String index, String type) {
try {
// 使用XContentBuilder创建Mapping
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("properties").startObject()
.field("name").startObject().field("index", "not_analyzed").field("type", "string").endObject()
.field("age").startObject().field("index", "not_analyzed").field("type", "integer").endObject()
.endObject().endObject();
System.out.println(builder.string());
PutMappingRequest mappingRequest = Requests.putMappingRequest(index).source(builder).type(type);
this.client.admin().indices().putMapping(mappingRequest).actionGet();
} catch (ElasticsearchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除索引
*
* @param index
* 要删除的索引名
*/
public void deleteIndex(String index) {
DeleteIndexResponse deleteIndexResponse = this.client.admin().indices().prepareDelete(index).get();
System.out.println(deleteIndexResponse.isAcknowledged()); // true表示成功
}
/******************** doc *************************************/
/**
* 创建一个文档
*
* @param index
* index
* @param type
* type
*/
public void createDoc(String index, String type, String id) {
try {
// 使用XContentBuilder创建一个doc source
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("name", "zhangsan")
.field("age", 12).endObject();
IndexResponse indexResponse = this.client.prepareIndex().setIndex(index).setType(type).setId(id) // 如果没有设置id,则ES会自动生成一个id
.setSource(builder.string()).get();
// System.out.println(indexResponse.isCreated());
} catch (ElasticsearchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 更新文档
*
* @param index
* @param type
* @param id
*/
public void updateDoc(String index, String type, String id) {
try {
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("name", "lisi").field("age", 12)
.endObject();
UpdateResponse updateResponse = this.client.prepareUpdate().setIndex(index).setType(type).setId(id)
.setDoc(builder.string()).get();
// System.out.println(updateResponse.isCreated()); // true表示成功
} catch (ElasticsearchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除一条数据
*
* @param index
* @param type
* @param id
*/
public void deleteDoc(String index, String type, String id) {
DeleteResponse deleteResponse = this.client.prepareDelete().setIndex(index).setType(type).setId(id).get();
// System.out.println(deleteResponse.isFound()); // true表示成功
}
/**
* 根据ID查询一条数据记录。
*
* @param id
* 要查询数据的ID。
* @return 返回查询出来的记录对象的json字符串。
*/
public String get(String index, String type, String id) {
GetResponse getResponse = this.client.prepareGet() // 准备进行get操作,此时还有真正地执行get操作。(与直接get的区别)
.setIndex(index) // 要查询的
.setType(type).setId(id).get();
return getResponse.getSourceAsString();
}
/**
* 使用min聚合查询某个字段上最小的值。
*
* @param index
* @param type
*/
public void min(String index, String type) {
SearchResponse response = this.client.prepareSearch(index)
.addAggregation(AggregationBuilders.min("min").field("age")).get();
InternalMin min = response.getAggregations().get("min");
System.out.println(min.getValue());
}
}
===============================================================================================================
public class ESTests {
String indexName = "index2";
String typeName = "string";
String idName = "1"; // 默认ID为1,可根据需要在各自方法内通过局部变量进行修改
/**
* 测试连接Elasticsearch
*/
@Test
public void testConn() {
ClientFactory clientFactory = new ClientFactory();
try {
// 搜索数据
GetResponse response = clientFactory.transportClient().prepareGet("index", "fulltext", "1").execute()
.actionGet();
// 输出结果
System.out.println(response.getSourceAsString());
// 关闭client
// clientFactory.transportClient().close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 增加(创建索引)
*/
@Test
public void testCreateIndex() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.createIndex(indexName);
}
/**
* 给索引增加mapping
*/
@Test
public void testAddMapping() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.addMapping(indexName, typeName);
}
/**
* 创建一个文档
*/
@Test
public void testCreateDoc() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
String idName = "2";
elasticsearchCURD.createDoc(indexName, typeName, idName);
}
/**
* 更新文档
*/
@Test
public void testUpdateDoc() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.updateDoc(indexName, typeName, idName);
}
/**
* 删除一条数据
*/
@Test
public void testDeleteDoc() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.deleteDoc(indexName, typeName, idName);
}
/**
* 根据ID查询一条数据记录(无返回--todo)
*/
@Test
public void testGetById() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
String idName = "2";
elasticsearchCURD.get(indexName, typeName, idName);
}
/**
* 使用min聚合查询某个字段上最小的值
*/
@Test
public void testMin() {
ClientFactory clientFactory = new ClientFactory();
// 创建一个实例
ElasticsearchCURD elasticsearchCURD = new ElasticsearchCURD(clientFactory.transportClient());
elasticsearchCURD.min(indexName, typeName);
}
}
相关文章推荐
- elasticsearch java操作的API
- elasticsearch-java api之索引(index)的各种操作
- java操作ElasticSearch的API
- ElasticSearch 6.x 学习笔记:28.Java API之文档批量操作
- ElasticSearch学习笔记-JavaAPI操作记录
- elasticsearch基本操作之--java基本操作 api
- 使用Elasticsearch的java api,操作elasticsearch
- elasticsearch之javaAPI简单操作增删改、批量处理(一)
- elasticsearch基本操作之--java基本操作 api
- Elasticsearch Java-API CRUD Java操作Elasticsearch
- ElasticSearch的Java Api基本操作入门指南
- ElasticSearch 5.0.1 java API操作
- elasticsearch 5.0 获取 TransportClient 操作客户端java API
- ElasticSearch60:Java api操作ElasticSearch5.2
- 博客园首页新随笔联系管理订阅 随笔- 7 文章- 0 评论- 4 ElasticSearch 5.0.1 java API操作
- elasticsearch 5.0 获取 TransportClient 操作客户端java API
- ElasticSearch的java API基本操作
- [ElasticSearch]使用 java API 进行CRUD操作
- 关于java API操作elasticsearch 实时更新的一些问题及解决
- 基于Elasticsearch2.1.1的JavaAPI基本操作代码示例