4.0.0
<groupId>com.xinghuan.nsj</groupId>
<artifactId>MyHbase</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.5.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--这个netty连接es有用到-->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.13.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
package com.nsj.es;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryAction;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.concurrent.ExecutionException;
public class EsDemo {
public static void main(String[] args) {
queryData();
}
public static void queryData(){
//指定es集群 192.168.146.129 https://www.cnblogs.com/kakatadage/p/10021957.html
Settings set= Settings.builder().put("cluster.name","nsj-application").build();
//创建访问ES服务器的客户端
try {
TransportClient client = new PreBuiltTransportClient(set)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("192.168.146.129"),9300));
//get方式数据查询 ,参数为Index,type和id
GetResponse response = client.prepareGet(“consumer”,“employee”,“2”).get();
System.out.println(response.getSourceAsString());
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//插入数据
@Test
public void test2() throws IOException {
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"nsj-application").build();
//创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(setting)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("192.168.146.129"),9300));
XContentBuilder doc = XContentFactory.jsonBuilder()
.startObject()
.field("id","5")
.field("title","我在学习es插入操作")
.field("content","好好学习,天天向上")
.endObject();
//添加一个doc
IndexResponse response = client.prepareIndex("consumer","employee",null)//id为null,由ES自己生成
.setSource(doc).get();
System.out.println(response.status());//打印添加是否成功
client.close();
}
//删除ES一个文档
@Test
public void delete() throws Exception{
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"nsj-application").build();
//创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(setting)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("hadoop2"),9300));
DeleteResponse response = client.prepareDelete("consumer","employee","1")
.get();
System.out.println(response.status());//打印添加是否成功
client.close();
}
@Test
public void update() throws IOException, ExecutionException, InterruptedException {
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"nsj-application").build();
//创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(setting)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("hadoop2"),9300));
UpdateRequest request = new UpdateRequest();
request.index("consumer")
.type("employee")
.id("1q7yHmwBCxDcI2VV-5Qi")
.doc(
XContentFactory.jsonBuilder().startObject()
.field("title","我在学习ES的修改操作")
.field("newadd","新增字段")
.endObject()
);
UpdateResponse response = client.update(request).get();
System.out.println(response.status());//打印是否成功
client.close();
}
//mget批量查询
@Test
public void mget() throws Exception{
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"nsj-application").build();
//创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(setting)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("hadoop2"),9300));
MultiGetResponse responses = client.prepareMultiGet()
.add("consumer", "employee", "1", "2")
.add("nsj", "area", "1")
.get();
for (MultiGetItemResponse item : responses) {
GetResponse gr = item.getResponse();
if (gr != null && gr.isExists()) {
System.out.println(gr.getSourceAsString());
}
}
}
//bulk批量操作
@Test
public void bulk() throws IOException {
//指定ES集群
Settings setting = Settings.builder().put(“cluster.name”,
“nsj-application”).build();
//创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(setting)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("hadoop2"),9300));
BulkRequestBuilder bulkBuilder = client.prepareBulk();
//批量添加
bulkBuilder.add(
client.prepareIndex("lib2", "books", "8")
.setSource(
XContentFactory.jsonBuilder()
.startObject()
.field("title", "python")
.field("price", 99)
.endObject()
)
);
bulkBuilder.add(
client.prepareIndex("lib2", "books", "9")
.setSource(
XContentFactory.jsonBuilder()
.startObject()
.field("title", "R")
.field("price", 89)
.endObject()
)
);
BulkResponse responses = bulkBuilder.get();
System.out.println(responses.status());
}
/**
* 查询所有
*/
@Test
public void selectAll() throws Exception{
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"nsj-application").build();
//创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(setting)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("hadoop2"),9300));
QueryBuilder gb = QueryBuilders.matchAllQuery();
SearchResponse sr = client.prepareSearch("lib2")
.setQuery(gb)
.setSize(3)
.get();
SearchHits hits = sr.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
/**
* 删除所有
*/
@Test
public void deleteAll() throws Exception{
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"nsj-application").build();
//创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(setting)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("hadoop2"),9300));
BulkByScrollResponse response = DeleteByQueryAction.INSTANCE
.newRequestBuilder(client)
.filter(QueryBuilders.matchQuery("title", "R"))
.source("lib2")
.get();
System.out.println(response.getDeleted());
}
}