ES transport client bulk insert

传输(transport)客户端

TransportClient利用transport模块远程连接一个elasticsearch集群。它并不加入到集群中,只是简单的获得一个或者多个初始化的transport地址,并以轮询的方式与这些地址进行通信。

// on startup
Client client = new TransportClient()
.addTransportAddress(new InetSocketTransportAddress("host1", 9300))
.addTransportAddress(new InetSocketTransportAddress("host2", 9300)); // on shutdown
client.close();

注意,如果你有一个与elasticsearch集群不同的集群,你可以设置机器的名字。

Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", "myClusterName").build();
Client client = new TransportClient(settings);
//Add transport addresses and do something with the client...

你也可以用elasticsearch.yml文件来设置。

这个客户端可以嗅到集群的其它部分,并将它们加入到机器列表。为了开启该功能,设置client.transport.sniff为true。

Settings settings = ImmutableSettings.settingsBuilder()
.put("client.transport.sniff", true).build();
TransportClient client = new TransportClient(settings);

利用elasticsearch帮助类生成JSON

elasticsearch提供了内置的帮助类来将数据转换为JSON

import static org.elasticsearch.common.xcontent.XContentFactory.*;

XContentBuilder builder = jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch")
.endObject()

注意,你也可以使用startArray(String)endArray()方法添加数组。另外,field可以接收任何类型的对象,你可以直接传递数字、时间甚至XContentBuilder对象。

可以用下面的方法查看json。

String json = builder.string();

索引文档

下面的例子将JSON文档索引为一个名字为“twitter”,类型为“tweet”,id值为1的索引。

import static org.elasticsearch.common.xcontent.XContentFactory.*;

IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
.setSource(jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch")
.endObject()
)
.execute()
.actionGet();

你也可以不提供id:

String json = "{" +
"\"user\":\"kimchy\"," +
"\"postDate\":\"2013-01-30\"," +
"\"message\":\"trying out Elasticsearch\"" +
"}"; IndexResponse response = client.prepareIndex("twitter", "tweet")
.setSource(json)
.execute()
.actionGet();

bulk API

bulk API允许开发者在一个请求中索引和删除多个文档。下面是使用实例。

import static org.elasticsearch.common.xcontent.XContentFactory.*;

BulkRequestBuilder bulkRequest = client.prepareBulk();

// either use client#prepare, or use Requests# to directly build index/delete requests
bulkRequest.add(client.prepareIndex("twitter", "tweet", "1")
.setSource(jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch")
.endObject()
)
); bulkRequest.add(client.prepareIndex("twitter", "tweet", "2")
.setSource(jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "another post")
.endObject()
)
); BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) {
// process failures by iterating through each bulk response item
} 摘自:https://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/java-api/index-api.html

最新文章

  1. 如何判断ScrollView滑动方形
  2. Balance_01背包
  3. 新版本的pdo会有这个问题
  4. sql - 以半月,每月 分组
  5. WEB前端开发规范文档(转)
  6. Javascript多线程引擎(八)
  7. DARK的锁链
  8. XML系列之--Linq操作带属性的XML(四)
  9. C#备份及还原数据库的实现
  10. Maven学习(七)-- 使用Maven构建多模块项目
  11. filp_open/filp_close/vfs_read/vfs_write
  12. UIScrollView的AutoLayout约束
  13. 超越halcon速度的二值图像的腐蚀和膨胀,实现目前最快的半径相关类算法(附核心源码)。
  14. Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置
  15. centos 查看USB接口的版本
  16. Bogus URL svn: is not properly URI-encoded
  17. POJ 2965 The Pilots Brothers' refrigerator (DFS)
  18. HDU Virtual Friends(超级经典的带权并查集)
  19. Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分
  20. ATX 免越狱调试IOS和Android

热门文章

  1. js获取某年某月一共多少天
  2. JS——大小写转化
  3. SQL基本操作——row_number() over()
  4. (转)Arcgis for Js之Graphiclayer扩展详解
  5. HDU_1285_拓扑排序(优先队列)
  6. jboss 虚拟路径
  7. 微信小程序——weui的使用
  8. js 简单模板引擎
  9. JAVA如何获得数据库的字段及字段类型
  10. 11.best fields策略(dis_max参数设置)