Elaticsearch分类传送门
前文有提到Java连接Elasticsearch6+的两种方式: Transport Client 和 Rest-High-Level.
那么连接上es之后的增删改查操作是如何使用的呢?这里作者给大家带来两种方式更新ES的方式
Transport Client:
def upsertElasticsearch(hashMap: util.HashMap[String,String],key: String): Unit = {
val gson = new Gson()
val json = gson.toJson(hashMap)
val updateRequest = new UpdateRequest()
updateRequest.index("xxxx")
.`type`("clp")
.id(key)
.docAsUpsert(true)
.doc(json,XContentType.JSON)
client.update(updateRequest).get()
}
Rest-High-Level-Client:
def updateIndex(hashMap: util.HashMap[String,String]): UpdateRequest = {
val id = hashMap.get(key)
val gson = new Gson()
val line = gson.toJson(hashMap)
val updateRequest = new UpdateRequest()
updateRequest.index("xxxxx")
.`type`("clp")
.id(id)
.docAsUpsert(true)
.doc(line,XContentType.JSON)
updateRequest
}
//每次批量写入最大Action数
elasticsearchBuilder.setBulkFlushMaxActions(1)
//权限验证
val restClientImpl = new RestClientImpl(ES_HOST_USERNAME, ES_HOST_PASSWORD)
restClientImpl.configureRestClientBuilder(RestClient.builder(new HttpHost(ES_HOST,9200,"http")))
elasticsearchBuilder.setRestClientFactory(restClientImpl)
//添加异常处理
elasticsearchBuilder.setFailureHandler(new ActionFailureHandler())
elasticsearchBuilder.build()
比较两种更新方式可以发现:
- transport client更新方式是使用client.update这个API来更新
- rest-high-level-client封信方式是使用RestClient,这里由于是使用flink-connector-es6这个包里自定义的elasticsearch sink,大家看的可能不是很明显,如果想要了解代码上下文,可以fllower下作者的GitHub
点滴积累,写作不易,如果有用就点个关注吧
您的点赞关注,是我长期写作的动力!!