Elasticsearch 使用java来进行crud操作

前面的文章描述了使用客户端的方式来进行crud的操作,但在项目中还是要以程序的方式来执行这些操作的,简单介绍一下常用的操作吧。

1、读取文档

GetResponse response = client.prepareGet("webapp", null, "1")
		.setFields("title", "content", "url", "view", "data")
		.execute().get();
其中webapp为索引名称,至于类型名称非必填的可不设置所以此处我设置为null,1则为文档ID,
setFields中的值即为查询后需要返回的字段信息。

------------------------------------------

SearchRequestBuilder builder = client.prepareSearch("indexName");
//此处根据业务需求建立各种查询
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
builder.setQuery(queryBuilder);
SearchResponse res = builder.execute().get();

2、索引文档

BulkRequestBuilder bulk = client.prepareBulk();
for (;;) {  //批量索引
	IndexRequestBuilder builder = client.prepareIndex(index, type);
	builder.setSource(jsonData);
	bulk.add(builder);
}
BulkResponse res = bulk.execute().actionGet();

3、更新文档(也可向索引文档一样进行批量操作,方式一致)

UpdateRequestBuilder builder = client.prepareUpdate(index, type, id);
UpdateResponse response = builder.setDoc(jsonData).execute().actionGet();

4、删除文档

IndicesOptions indicesOptions = IndicesOptions.fromOptions(true, true,
				                           true, false);
DeleteByQueryRequestBuilder builder = DeleteByQueryAction.INSTANCE
				      .newRequestBuilder(client);
builder.setIndicesOptions(indicesOptions);

if (index != null) builder.setIndices(index);
if (types != null) builder.setTypes(types);
if (query == null) query = QueryBuilders.matchAllQuery();				
builder.setQuery(query);
DeleteByQueryResponse res = builder.get();

   更多函数请查看源代码

猜你喜欢

转载自study121007.iteye.com/blog/2296541