标签:
既然是开发篇,主要以代码为主,辅助一些说明。所有的内容都是代码实际应该验证过的。
引入的头文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import static org.elasticsearch.node.NodeBuilder.nodeBuilder; import java.io.IOException; import java.net.InetAddress; import java.util.Date; import java.util.Map; import java.util.Set; import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse; import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.Client; import org.elasticsearch.client.ClusterAdminClient; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.cluster.health.ClusterIndexHealth; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.node.Node; import static org.elasticsearch.common.xcontent.XContentFactory.*; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
XContentBuilder mapping = XContentFactory.jsonBuilder() .startObject() .startObject( "settings" ) .field( "number_of_shards" , 1 ) //设置分片数量 .field( "number_of_replicas" , 0 ) //设置副本数量 .endObject() .endObject() .startObject() .startObject(type) //type名称 .startObject( "properties" ) //下面是设置文档列属性。 .startObject( "type" ).field( "type" , "string" ).field( "store" , "yes" ).endObject() .startObject( "eventCount" ).field( "type" , "long" ).field( "store" , "yes" ).endObject() .startObject( "eventDate" ).field( "type" , "date" ).field( "format" , "dateOptionalTime" ).field( "store" , "yes" ).endObject() .startObject( "message" ).field( "type" , "string" ).field( "index" , "not_analyzed" ).field( "store" , "yes" ).endObject() .endObject() .endObject() .endObject(); CreateIndexRequestBuilder cirb = client .admin() .indices() .prepareCreate(indexName) //index名称 .setSource(mapping); CreateIndexResponse response = cirb.execute().actionGet(); if (response.isAcknowledged()) { System.out.println( "Index created." ); } else { System.err.println( "Index creation failed." ); } |
1
2
3
4
5
6
7
8
9
10
11
12
|
IndexResponse response = client .prepareIndex(indexName, type, "1" ) .setSource( //这里可以直接用json字符串 jsonBuilder().startObject() .field( "type" , "syslog" ) .field( "eventCount" , 1 ) .field( "eventDate" , new Date()) .field( "message" , "secilog insert doc test" ) .endObject()).get(); System.out.println( "index:" +response.getIndex() + " insert doc id:" +response.getId() + " result:" +response.isCreated()); |
1
2
3
4
5
6
|
GetResponse response = client.prepareGet( "secilog" , "log" , "1" ).get(); String source = response.getSource().toString(); long version = response.getVersion(); String indexName = response.getIndex(); String type = response.getType(); String id = response.getId(); |
本文由赛克蓝德(secisland)原创,转载请标明作者和出处。
修改文档有两种方式,一种是直接修改,另一种是如果文档不存在则插入存在则修改。
第一种代码
1
2
3
4
5
6
7
8
9
|
UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index(indexName); updateRequest.type(type); updateRequest.id( "1" ); updateRequest.doc(jsonBuilder() .startObject() .field( "type" , "file" ) .endObject()); client.update(updateRequest).get(); |
第二种代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
IndexRequest indexRequest = new IndexRequest(indexName, type, "3" ) .source(jsonBuilder() .startObject() .field( "type" , "syslog" ) .field( "eventCount" , 2 ) .field( "eventDate" , new Date()) .field( "message" , "secilog insert doc test" ) .endObject()); UpdateRequest updateRequest = new UpdateRequest(indexName, type, "3" ) .doc(jsonBuilder() .startObject() .field( "type" , "file" ) .endObject()) .upsert(indexRequest); client.update(updateRequest).get(); |
1
2
|
DeleteResponse dresponse = client.prepareDelete( "secilog" , "log" , "4" ).get(); boolean isFound = dresponse.isFound(); //文档存在返回true,不存在返回false; |
1
2
|
DeleteIndexRequest delete = new DeleteIndexRequest( "secilog" ); client.admin().indices().delete(delete); |
赛克蓝德(secisland)后续会逐步对Elasticsearch的最新版本的各项功能进行分析,近请期待。也欢迎加入secisland公众号进行关注。
标签:
原文地址:http://www.cnblogs.com/bmaker/p/5472054.html