您的位置:首页 > 编程语言 > Java开发

使用Java API操作ElasticSearch

2018-08-02 14:35 447 查看

Client

client是一个类,我们可以通过Client类对ES集群进行各种操作:Index  Get Delete Serach,以及对ES集群的管理任务。

Client需要基于 TransportClient

 

TransportClient

TransportClient可以远程链接ES集群,通过一个传输模块,但是它不真正的连接到集群中,只是获取一个或者多个传输地址,只有在每次的请求动作中才真正连接到集群。 例如下代码:

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
//访问数据库先要连接数据一样,这种连接过程在 es 中称作连接集群 cluster。完成这样工作的是“传输客户端 TransportClient”。
.addTransportAddress(new TransportAddress(InetAddress.getByName("机器IP"),9300));

Settings

Settings类主要是在启动Client之前,配置一些属性参数,主要配置集群名称cluster.name,还有其他参数

 

Document API

主要分为以下类:Index API , Get API , Delete API , Update API, Multi Get API, Bulk API

 

ES中生成Json的方法

手动编写Json:

String json = "{" +
        "\"user\":\"kimchy\"," +
        "\"postDate\":\"2013-01-30\"," +
        "\"message\":\"trying out Elasticsearch\"" +
    "}";
 

通过Map:

Map<String, Object> json = new HashMap<String, Object>();
json.put("user","kimchy");
json.put("postDate",new Date());
json.put("message","trying out Elasticsearch");

 

通过Gson:

JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", "大数据编程思想");
jsonObject.addProperty("publicdate", "2018-05-09");
jsonObject.addProperty("price", "100");
String json = jsonObject.toString();

 

Index API可以索引一个典型的JSON文档到指定的索引中,并且可以使它可以检索。

操作笔记:

切记!!!我们操作ES都是通过TransportClient对象来操作的,里面提供了方法使我们可以操作ES

获取TransportClient对象的api

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
//访问数据库先要连接数据一样,这种连接过程在 es 中称作连接集群 cluster。完成这样工作的是“传输客户端 TransportClient”。
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.234.140"),9300));

创建索引:

IndexResponse response = client.prepareIndex("index-json","ren","1").setSource(jsonStr, XContentType.JSON).get();

prepareIndex有三个方法如下:

client.prepareIndex();
client.prepareIndex("索引库名称","索引库下类型");
client.prepareIndex("索引库名称","索引库下类型","id");

我们这里还有一个 .setSource方法,有多个重构方法,可以使用多种不通的类型,如Map  byte  json,创建索引后,可以通过返回的resonse对象,获取状态信息:

修改索引:

修改索引和上面基本一样:

UpdateResponse response = client.prepareUpdate("book", "java","1")

.setDoc(jsonObject.toString(),XContentType.JSON).get();

有没有发现和SQL关键字很像, 都是用内部中的Index  update Get以及我们删除索引 Delete

 

这里还要着重说一下 获取索引和查询所有

我们通过过TransportCliet对象中 prepareGet方法来获取我们想要的内容

 

查询多个内容:

 

条件查询:

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: